【发布时间】:2022-01-04 09:50:41
【问题描述】:
我想使用连接中的子查询获取给定产品 ID 的所有产品属性(如果有)。
以下是我的查询
$product_attributes = ProductAttributes::select('name as attribute_name', 'value as attribute_value')->get();
$data['product']= Product::select('products.*','vendors.name as vendor_name','product_discounts.start_time',
'product_discounts.end_time', 'product_discounts.discount_type','product_discounts.discount_value','product_attributes.name','product_attributes.value')
->leftjoin('product_discounts','products.id','=','product_discounts.product_id')
->joinSub($product_attributes, 'product_attributes', function ($join) {
$join->on('products.id', '=', 'product_attributes.product_id');
})->leftjoin('vendors','products.vendor_id','=','vendors.id')->where('id',$request->product_id)->first();
这个查询给了我以下错误
InvalidArgumentException 子查询必须是查询构建器实例, 闭包或字符串。
如果我使用简单的 leftjoin 和产品属性,它会给我 product_attributes 表中的最后一项。
有人可以指导我如何在没有循环的情况下针对产品列出所有产品属性。下面是产品属性表
【问题讨论】:
-
你有没有使用 Eloquent 建立过模型关系?
-
@party-ring 不,我没有,你能指导我如何在这种情况下使用关系
标签: laravel join eloquent subquery