【发布时间】:2021-03-09 13:46:29
【问题描述】:
我有这样的产品表:
id | Title | Price
1 Title 1 5000
2 Product 2 7000
这与product_attribute表有关
id | product_id | attribute_id | attribute_name | value
1 1 5 Color Red
2 1 6 Size XL
3 2 5 Color Green
在产品模型中有如下关系:
public function attributes()
{
return $this->hasMany(ProductsAttribute::class, 'product_id ');
}
在控制器方法中:
public function search(Request $request)
{
$attributes=$request->attributes;
foreach($attributes as $attr)
{
$attribute_id=$attr['attribute_id'];
$attribute_value=$attr['value'];
}
return product::with('attributes')
->whereHas('attributes', function ($query) use ($attribute_id,$attribute_value) {
$query->where('attribute_id', $attribute_id);
$query->where('value', $attribute_value);
})->paginate(10);
}
问题出在我的 foreach 循环中,我得到了多个属性 ID 和属性值,但在查询中我只能传递属性 ID 和值的单个值。我想获取属性 id 和属性值匹配的所有产品。非常感谢任何帮助。
【问题讨论】:
-
平均 $attribute_id 和 $attribute_value 是数组
-
@Donkarnash:目前它是一个变量,但如果可以从我正在使用的单个查询中获取,我们可以将其设为数组