集合关系选择列不起作用Laravel

时间:2019-03-05 08:05:41

标签: laravel eloquent relationship

我正在尝试选择关系数据库(product_detail)的列(id,标题),但是它根本不起作用。

我的查询:

RoomProduct::select('product_id', DB::raw('SUM(value) as total'))
          ->whereHas('room.offer', function($sql) use ($offer_id) {
              $sql->where('id', $offer_id);
          })->whereHas('product_detail', function($sql) use ($category_id) {
              $sql->select("id", "title")->with(['category' => function ($query) {
                $query->where('parent_id', $category_id);
            }])->orWhere('id', $category_id);
          })->groupBy("product_id")->get();

1 个答案:

答案 0 :(得分:1)

首先阅读这篇文章的最高评分答案-> Laravel - Eloquent "Has", "With", "WhereHas" - What do they mean?

whereHas()方法与has()方法相同,不同之处在于它允许您在闭包内部提供其他where子句。但是这两种方法都只会返回具有您所要求的关系的模型。但这并不意味着它将在这些关系中返回任何列。

您将需要使用with()方法来获取所需的列,然后在您选择的列中将其引用为select('product_id', DB::raw('SUM(value) as total'), 'product_detail.id', 'product_details.title')

我希望这对您有所帮助!如果不清楚或有任何疑问,我将确保尽快答复。