2016-10-05 10 views
1

私が持っている。このような2つのモデル:リレーショナルデータに属しているのリストを表示する方法

ユーザー:

id - username 

画像:

id - img - user_id 

各ユーザーが多くの画像を持っています。だから私はhasManyの関係を使用する必要がありますね。

ユーザーのリストがある場合はどうすれば使用できますか。画像の

リスト:

public function user() 
{ 
    return $this->belongsTo('User'); 
} 

答えて

1

試してみてください。Imageモデルで

public function image() 
    { 
     return $this->hasMany('Image'); 
    } 

Userモデルで

img - username 

今どのように私は、ユーザー名による画像の一覧を表示することができますこれは:

DB::table('users') 
      ->join('images', 'images.user_id', '=', 'users.id') 
      ->orderBy('users.username') 
      ->groupBy('users.username') 
      ->get(); 

[OK]を、このお試しください:ので

$users = App\User::all(); 
     foreach ($users as $user) { 
      $temp = App\UserImage::where('userId',$user->id)->get(); 
      $user['images'] = $temp; 
     } 
     return $users; 
+0

て画像を返します。 –

+0

@ S.M_Emamian私は自分の答えを編集しました。確認してみてください。 –

0

を、命名規則のためのユーザhasManyのイメージは、ユーザーモデルに関係images()を作ります。 これで、すべてのユーザー名に画像が表示されます。これは彼らのイメージを持つユーザーのコレクションを返します

$users = App\User::with('image')->get(); 

:自分のイメージを持つユーザーを取得するための

$users=User::with('images')->get(); 
foreach($users as $user) 
{ 
    print_r($user->username); 
    foreach($user->images as $image) 
    { 
    print_r($image); 
    } 
} 
2

より「laravelウェイ」ソリューションは次のようになります。それから、ユーザーをループして次のような画像を表示することができます(表示されます)。

@foreach($users as $user) 
    <ul> 
     @foreach($user->images as $image) 
     <li>{{ $image }}</li> 
     @endforeach 
    <ul> 
@endforeach 
0

これは、ユーザーのクエリにImageモデルをもたらします。ユーザーは結果をグループ化します。

$userImages = User::with('image')->groupBy('id')->get(); 

あなたはユーザーと画像を引き上げていますので、あなたは、IDと「ID」、「ユーザ名」、「img_id」、または「IMG」フィールドを照会し、両者を結ぶUSER_IDすることができます。

これはユーザーです。

 $userImages ->id->username 

これは、私が参加使いたくないユーザー

foreach($userImages as $userImage) 
{ 
    $userImage->image->user_id->img; 
} 
関連する問題