Laravel限制关系数据

时间:2016-09-28 09:47:25

标签: 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)没有。我得到了所有的关系结果,而我只查找按power列排序的前3个。

->orderBy('power','desc')->take(3)无法使用$query

如何将实际数据限制为power列排序的3个结果?

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();