Laravel极限关系数据
问题描述:
我有以下雄辩查询:Laravel极限关系数据
$move['topUsers'] = UserMoves::where('move_id',$move->id)
->with(array('userBase'=>function($query){
$query->select('id','name')->orderBy('power','desc')->take(3);
}))->get();
的查询工作正常,但->take(3)
没有。当我只查找前3个时,我得到所有关系结果,按power
列排序。
->orderBy('power','desc')->take(3)
在$query
中不工作。
如何才能将实际数据限制在由power
列排序的3个结果中?
答
尝试方法从this article这正是有关限制而急切装载关系:
// New relationship
public function mostPowerful()
{
return $this->hasOne('userBase')->orderBy('power', 'desc');
}
// Get data
$move['topUsers'] = UserMoves::where('move_id',$move->id)
->with('mostPowerful')
->take(3)
->get();
答
试试这个。
$move['topUsers'] = DB::table('your_table_name')
->where('move_id', $move->id)
->select('id','name','power')
->orderBy('power', 'desc')
->take(3)
->get();
希望这项工作。
答
没有数组:
$topusers = UserMoves::where('move_id',$move->id)
->with(['userBase'=>function($query){
$query->select('id','name')->orderBy('power','desc')->take(3);
}])->get();