2016-09-28 11 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)にはありません。私はpower列で注文された最初の3つのみを探している間に、すべての関連結果を取得します。

->orderBy('power','desc')->take(3)$queryでは機能しません。

どのようにpower列で注文された3つの結果にrealtionデータを制限できますか?

答えて

0

てみてください方法:

// 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

:正確に熱心読み込みながら関係を制限についてですthis articleから

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