Laravel 5 Laravel 5.4雄辩关系和局部范围
我使用的是Laravel5.4,有两种型号,用户和省份 在模型用户中:Laravel 5 Laravel 5.4雄辩关系和局部范围,laravel-5,relationship,Laravel 5,Relationship,我使用的是Laravel5.4,有两种型号,用户和省份 在模型用户中: public function scopeWithSort($query, $sorting, $by) { return $query->orderBy($sorting, $by); } public function province() { return $this->belongsTo('App\Province', 'loctio
public function scopeWithSort($query, $sorting, $by)
{
return $query->orderBy($sorting, $by);
}
public function province()
{
return $this->belongsTo('App\Province', 'loction_id');
}
在控制器用户中:
$query = User::with('province')->select('*');
if ($request->sorting == 'location_id') {
$query->withSort('provinces.name', $request->by); // ** error line
}
如何使用此关系进行排序。谢谢你 您必须使用不同的方法 您可以使用修改后的
withCount()
对查询进行排序:
if($request->sorting==“location\u id”){
$query->withCount(['province'=>函数($query){
$query->select('name');
}])->订货人('province\u count',$request->by);
}
或者对查询结果进行排序:
$users=$query->get();
如果($request->sorting==“location\u id”){
$users=$users->sortBy('province.name',$request->by);
}
谢谢您的回复!但是为什么要使用with count()
?此外,我还使用分页,因此如果无法在分页后调用排序。withCount()
只是从省关系创建子查询的一种方便方法。您还可以使用DB::raw()
使用原始SQL添加子查询。加入省
表是另一种可能的解决方案。是的,我明白了。事实上,我的团队要求在控制器中使用纯雄辩,而不是使用查询生成器。不管怎样,有什么解决办法吗?我不知道你在这方面的区别。难道你不认为withCount()
解决方案是“纯粹的雄辩”吗?我(和其他人)将以User::
开头的查询视为“雄辩的”,将DB::table('users')
等查询视为“查询生成器”