2016-10-05 2 views
1

Ich habe zwei Modell wie folgt aus:Wie eine Liste zeigen, die in relationalen Daten gehören

Benutzer:

id - username 

Image:

id - img - user_id 

jeder Benutzer viele Bilder. so klingt es, ich sollte hasMany Beziehung verwenden.

Ich weiß, wie kann ich verwenden, wenn ich eine Liste der Benutzer habe. jetzt, wie kann ich zeigen, eine Liste der Bilder, die durch Benutzernamen:

Liste der Bilder:

img - username 

in User Modell:

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

in Image Modell:

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

Antwort

1

Try Dies ist:

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

Ok Versuchen Sie dann das:

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

Ich will nicht beitreten verwenden. –

+0

@ S.M_Emamian Ich habe meine Antwort bearbeitet. Bitte überprüfen und versuchen Sie es. –

0

Da der Benutzer hasMany Bilder, für die Namenskonvention, um die Beziehung images() in Benutzermodell. dann wird dies alle Benutzernamen mit ihren Bildern geben.

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

Eine „Laravel-way“ Lösung für Anwender mit ihren Bildern immer so etwas wie sein:

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

Dieser wird wieder eine Sammlung von Benutzern mit ihren Bildern. Fortan können Sie eine Schleife durch die Benutzer und zeigen Bilder wie diese (aus Ihrer Sicht):

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

Dies bringt im Bild Modell Ihrer Benutzerabfrage. Es gruppiert die Ergebnisse nach Benutzer.

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

Da Sie Benutzer haben und Bilder nach oben gezogen, können Sie ‚id‘, ‚username‘, ‚img_id‘ oder ‚img‘ Felder mit id abfragen und user_id die beiden verbindet.

Dies ist der Benutzer.

 $userImages ->id->username 

Dies gibt die Bilder durch Benutzer

foreach($userImages as $userImage) 
{ 
    $userImage->image->user_id->img; 
} 
Verwandte Themen