我有一个关于根据API请求的参数动态构造SQL查询的问题。使用LARAVEL 5.5。
想象一下,我有一本书的桌子。如果我想获取books表的某些字段(按名称排序),则有以下请求:
获取书籍?fields = id,name&sort = name
(我提供了通用服务来从表中检索我想要的所有内容,请参见此处:Laravel api : how to get only some fields and sort the response)
想象一下,现在我想获得相同的资源,以及每本书的销售数量。如果我想变得逻辑合理,我会这样请求:
获取书籍?fields = id,名称,数量和名称= em (请参阅已添加的数量)
如果我想按数量对结果进行排序:
获取图书?fields = id,名称,数量&sort =数量
但是问题在于,books表中不存在数量列。该数量必须与另一个表和一个分组依据结合在一起。
该怎么做?
在模型中添加访问器?
定义2种模型(书籍和销售)之间的关系
我别无选择,我必须构建一个特定的SQL查询来做到这一点(我想避免这种解决方案)
Merci Dom
答案 0 :(得分:0)
查询关系时,请使用withCount:
示例:
$books = App\Book::withCount('sales')->get();
foreach ($books as $book) {
echo $book->sales_count;
}
您将需要在帐簿和销售表之间定义一个关系。