我正在尝试选择关系数据库(product_detail)的列(id,title),但它根本不起作用。
我的查询:
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();
首先阅读这篇文章的最高评价答案 - > 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')
我希望这对你有所帮助!如果不清楚或有任何问题,我一定会尽快回复。