2016-11-22 29 views
2

私はusersimagesimage_userテーブルを持っています。私は熱心に負荷をかけ、画像を持っているすべてのユーザーを手に入れようとしていますが、limitの画像は4にしかなりません。Laravel Eloquentクエリ 'with'

ギャラリーと考える。ユーザーが1枚のまたは多数の画像

ユーザーモデル

public function images() 
{ 

    return $this->belongsToMany(Images::class); 
} 

を持つことができますどこにこれが私のクエリは、これまでのところです。

User::with(['images' => function ($query) { 
    $query->limit(4); 
    } 
])->get(); 

このクエリでは、ユーザーを返しますが、空の関係(画像)

で任意の助けいただければ幸いです。

乾杯

答えて

0

take()を使用すると、わずか5枚の画像しか撮影できません。

$users=User::with('images')->get(); 
foreach($users as $user) 
{ 
    echo $user->name; 
    foreach($user->images->take(5) as $image) 
    { 
     echo $image; 
    } 
} 
+0

これは最初のユーザーのみを取得します。 OPは、すべてのユーザーを取得する必要があると言いました。 @JosephSilber編集済み –

+0

これは実践的ではありませんか? –

+0

これで、DBからすべてのイメージをロードしています。 @JosephSilberはい。 –

1
$user = User::with('images')->limit(5)->get(); 

あなたはPHPの職人いじくりを知っていますか?コマンドラインからデータを出力することができます。

は...

App\User::with('images')->limit(5)->get(); 

でそれを試してみてください..and、あなたの関係が右に設定されている提供し、画像を5人のユーザーが表示されます。

編集

申し訳ありませんが、私は右のあなたの質問を読んでいません。

各ユーザーに返されるイメージを制限するには、ユーザーモデルで新しいメソッドを作成することができます。

public function imageslimit(){ 

     return $this->belongsToMany(Images::class)->limit(5); 

    } 

すべてのユーザーをコントローラから見えるようにします。

$users = User::all(); 

次に、ビュー内のすべてのユーザーをループするときに呼び出します。

@foreach($user->imageslimit as $image) 

    $image->name; 

@endforeach 

私はこれをテストして、うまく動作します。

+0

私はあなたが私が意味するものを得ると思う。私はユーザーではなく画像を取得しようとしています。あなたが私に与えたコードは、ユーザの画像で​​はなく、ユーザの画像で​​はなく、画像の数を4で制限することです。BTWうん、私はPHPの職人のことを知っています。 – usrNotFound

+0

あなたが探しているものが編集されています。それは私のためにうまく動作します。 – Phoenix1331

+0

このコードは、合計5画像しかロードできません。 OPはユーザー1人につき5枚の画像が必要です。 –