我正在尝试选择关系数据库(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();
答案 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')
我希望这对您有所帮助!如果不清楚或有任何疑问,我将确保尽快答复。