【发布时间】:2019-05-14 09:20:13
【问题描述】:
我需要按特定属性 id 和他的值对产品进行排序。我有具有关系的模型产品:
public function attribute()
{
return $this->hasMany('App\Models\ProductAttribute');
}
ProductAttribute 模型有:
public function attribute()
{
return $this->belongsTo('App\Models\AttributeValue', 'attribute_value_id');
}
我需要对attribute_id = 5 且具有该属性的所有值的产品进行排序。我尝试这样做:
$products = Product::active()->where(function($query) {
$query->whereHas('attribute.attribute', function($q) {
$q->where('attribute_id', 5)->orderBy('value', 'desc');
});
})->get();
但这不起作用。
模型产品属性结构表:
- 身份证
- attribute_value_id
- product_id
模型AttributeValue结构表:
- 身份证
- attribute_id
- 价值
输入值可以是数值。 请帮我解决这个问题。
【问题讨论】:
-
您需要在关系上使用 join 而不是那样加载它,现在您订购的是关系而不是“产品”。