以下代码运行良好,并以我的API的JSON格式显示所有产品。
public function promotions()
{
return $this->prepareResult(true, Product::has('discount')->where(['company_id'=> 1, 'is_active'=>1])->with('category')->with('discount')->get(), [],"All Promotions");
}
但我希望结果按折扣表中的id排序。像orderBy(' discount.id',' desc')之类的东西。任何人都可以为此提供解决方案!如何使用orderBy与' id'专栏'折扣'表使用has()?
答案 0 :(得分:1)
您可以在with
声明中使用某个功能:
public function promotions()
{
return $this->prepareResult(true, Product::has('discount')
->where(['company_id'=> 1, 'is_active'=>1])
->with('category')
->with(['discount' => function ($query) {
return $query->orderBy('id','DESC');
}])->get(), [],"All Promotions");
}
您可以在文档中了解此here。
答案 1 :(得分:0)
如果你想去收集方法路线而不是Alex的答案(这也是有效的),你可以在get之后继续链接收集方法。由于你包含了with(),你可以做到
->get()->sortBy('discount.id')
https://laravel.com/docs/5.6/collections#method-sortby
与您的问题无关,但想指出您可以将多个参数传递给with(),这样您就不会再调用它。
Product::has('discount')->where(['company_id'=> 1, 'is_active'=>1])->with('discount', 'category')->get()