使用laravel

时间:2018-08-04 17:16:55

标签: laravel eloquent

我有一个关于根据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

1 个答案:

答案 0 :(得分:0)

查询关系时,请使用withCount

示例:

$books = App\Book::withCount('sales')->get();

foreach ($books as $book) {
    echo $book->sales_count;
}

您将需要在帐簿和销售表之间定义一个关系。