结合关系排序和过滤

时间:2015-12-25 21:21:36

标签: php laravel laravel-5 eloquent laravel-5.1

我有两个模型:项目和类别。 Item模型有一个category_id字段,它是该类别的外键。

在搜索页面上,我正在执行过滤。这是通过一系列where()子句完成的,例如

if($request->input('location_id', "") != "") {
    $query->where('location_id', '=', $request->input('location_id'));
}

这些包含在范围search()中,因此它们被调用如下:

$results = Item::search($request)->get();

我现在想要对结果应用排序,首先是类别的name列,然后是项目表的product_number列。

如何在不干扰search范围内的过滤的情况下进行此操作?

1 个答案:

答案 0 :(得分:1)

只需添加多次调用 orderBy()

$results = Item::search($request)
  ->join('categories', 'category_id', '=', 'categories.id')
  ->select('items.*')
  ->orderBy('categories.name')
  ->orderBy('product_number')
  ->get();