2016-10-05 76 views
1

我有兩個模型是這樣的:如何顯示列表中的關係數據屬於

用戶:

id - username 

圖片:

id - img - user_id 

每個用戶都有許多圖像。所以聽起來我應該使用hasMany關係。

我知道如何使用,如果我有一個用戶列表。現在我該怎麼讓戶名圖像列表:

圖像列表:

img - username 

User模型:

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

Image模型:

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

回答

1

嘗試此:

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

好吧那就試試這個:

$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=User::with('images')->get(); 
foreach($users as $user) 
{ 
    print_r($user->username); 
    foreach($user->images as $image) 
    { 
    print_r($image); 
    } 
} 
2

爲讓用戶與他們的圖像將會像一個更「laravel路」的解決方案:

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

這將返回用戶的集合與自己的形象。從此,您可以循環瀏覽用戶並顯示如下所示的圖像(在您的視圖中):

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

這會將圖像模型引入您的用戶查詢。它按用戶分組結果。

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

既然你有用戶和圖像拉昇,可以查詢「ID」,「用戶名」,「img_id」,或與ID爲「IMG」字段和user_id說明連接兩個。

這是用戶。

 $userImages ->id->username 

該用戶

foreach($userImages as $userImage) 
{ 
    $userImage->image->user_id->img; 
} 
相關問題