【问题标题】:How to sql query to laravel query如何sql查询到laravel查询
【发布时间】:2020-04-19 10:19:11
【问题描述】:

我的 SQL 查询:

DB::raw("SELECT serviceProvider.*, serviceProviderItem.data as price FROM serviceProvider, serviceProviderItem WHERE serviceProvider.id in(34,35) and (serviceProviderItem.providerid = serviceProvider.id) and (serviceProviderItem.itemid = '164')");

到 Laravel 查询?

固定代码:

DB::table("serviceProvider")->
join('serviceProviderItem', 'serviceProviderItem.providerid', '=', 'serviceProvider.id')
->select("serviceProviderItem.data")
->select("serviceProvider.*")
->where('serviceProviderItem.itemid', $priceVariable)
->whereIn('serviceProvider.id', $providerIdler)
->orderby("data", "asc")
->paginate(15); 

【问题讨论】:

  • 当你说“Laravel 查询”时,你想使用 Eloquent 还是查询构建器?
  • 是的例子:ServiceProvider::where(eg...)
  • 您是否在模型上创建了关系? (ServiceProvider 和 ServiceProviderItem)如果可以的话,你可以把它贴在这里,这样我们就可以弄清楚如何使用 Eloquent 构建查询
  • sql 查询为真。仅查询生成器。

标签: php laravel


【解决方案1】:

您需要将 DB::raw 查询传递给 DB::select 以便在 Laravel 中执行原始查询。

DB::select(DB::raw("SELECT serviceProvider.*, serviceProviderItem.data as price FROM serviceProvider, serviceProviderItem WHERE serviceProvider.id in(34,35) and (serviceProviderItem.providerid = serviceProvider.id) and (serviceProviderItem.itemid = '164')"));

我也建议你使用 Laravel 的 Eloquent,这会让你的代码更加整洁和可读。

【讨论】:

  • return 调用数组上的成员函数 get()。我不知道如何用 Laravel 创建
  • 只保留 DB::select 并删除 get() 方法,然后检查
  • 更多参考可以查看Laravel的这个文档laravel.com/docs/5.0/database#running-queries
  • @nonenone 调用未定义方法的原因是因为查询已经使用 select 方法执行并给出了一组数组作为回报,然后我们也尝试在其上使用 get 方法,这通常是用于从查询中检索记录集。
猜你喜欢
  • 2020-03-25
  • 2018-05-31
  • 2021-07-27
  • 2021-10-11
  • 2015-02-13
  • 1970-01-01
  • 2018-10-02
  • 2018-04-28
  • 2020-06-15
相关资源
最近更新 更多