orderBy on hasMany 关系 laravel
Posted
技术标签:
【中文标题】orderBy on hasMany 关系 laravel【英文标题】:orderBy on hasMany relationship laravel 【发布时间】:2020-03-25 18:29:30 【问题描述】:我使用 ProductCatRel 模型建立了从 Category 模型到 Product 模型的“hasMany”关系。
我正在尝试从 Category 模型订购我的产品。 “where”条件很好,但“orderBy”不起作用。这是我的代码:
public function Products()
return $this->hasMany(ProductCatRel::class,'category')
->with('Product')
->whereHas('Product', function($q)
$q->where('status', 1)->orderBy('position');
);
【问题讨论】:
【参考方案1】:使用下面的 sn -p 可能会起作用
public function products()
return $this->hasMany(ProductCatRel::class,'category')
->with('Product')
->whereHas('Product', function($q)
$q->where('status', 1)
);
$products = App\Category::find(1)->products()->orderBy('position')->get();
【讨论】:
【参考方案2】:whereHas()
只检查存在,不影响检索到的关系数据。
您应该在with()
方法中应用orderBy()
。您还需要在with()
方法中重复状态检查。
public function Products()
return $this
->hasMany(ProductCatRel::class, 'category')
->with(['Product' => function ($q)
$q->where('status', 1)->orderBy('position');
])
->whereHas('Product', function($q)
$q->where('status', 1);
);
【讨论】:
以上是关于orderBy on hasMany 关系 laravel的主要内容,如果未能解决你的问题,请参考以下文章
Laravel eloquent apply whereHas on the latest record of hasMany 关系
Laravel 5.2 orderBy与ofCount的关系导致SQL错误,因为尝试获取列而不是计数失败