我有以下雄辩的查询:
$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)
没有。我得到了所有的关系结果,而我只查找按power
列排序的前3个。
->orderBy('power','desc')->take(3)
无法使用$query
。
如何将实际数据限制为power
列排序的3个结果?
答案 0 :(得分:0)
试试这个。
$move['topUsers'] = DB::table('your_table_name')
->where('move_id', $move->id)
->select('id','name','power')
->orderBy('power', 'desc')
->take(3)
->get();
希望这项工作。
答案 1 :(得分:0)
没有数组:
$topusers = UserMoves::where('move_id',$move->id)
->with(['userBase'=>function($query){
$query->select('id','name')->orderBy('power','desc')->take(3);
}])->get();
答案 2 :(得分:0)
尝试来自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();