2016-09-28 95 views
1

我有以下雄辩查询: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个结果中?

回答

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

试试这个。

$move['topUsers'] = DB::table('your_table_name') 
       ->where('move_id', $move->id) 
       ->select('id','name','power') 
       ->orderBy('power', 'desc') 
       ->take(3) 
       ->get(); 

希望这项工作。

0

没有数组:

$topusers = UserMoves::where('move_id',$move->id) 
        ->with(['userBase'=>function($query){ 
          $query->select('id','name')->orderBy('power','desc')->take(3); 
         }])->get();