2016-10-10 12 views
1


どのように私は雄弁を使用しているユーザーのすべてのクライアントを取得できますか?
Laravel 5、私は以下のように3つのテーブルを持っている雄弁関係

私はユーザーhasManyThroughメソッドがないので、クライアントテーブルにはproject_idがありません。

は、だから私が達成したいものです。コードの上

foreach($users as $user) 
    foreach($user->clients as $client) //HOW TO SET UP THIS RELATION? 
     foreach($client->projects($user)->get() as $project) 
+0

あなたはlaravelで、ユーザーとプロジェクトのモデルとの関係を持っている必要があります –

+0

私はユーザープロジェクトを直接(ユーザーhasManyプロジェクト)得ることができることを知っていますが、私はクライアントモデルを介してそれらを取得したいと思います。つまり、クライアントもtに属していません彼のユーザは、クライアントのプロジェクトがユーザに属している限り、ユーザはクライアントを介してプロジェクトを取得することができます。 –

+0

あなたは 'hasManyThrough'関係を試しましたか? –

答えて

0
$users = User::with('projects')->get(); 

    // organize cleints' project and add for each user 
    foreach ($users as $user) { 
     // order projects by client_id 
     $projects = Collect($user->projects->toArray()); 
     $clients = $projects->groupBy('client_id'); 

     // keep projects data in 'projects' index 
     $temp = array(); 
     foreach($clients as $client => $projects){ 
      $temp[$client] = array('projects' => $projects); 
     } 

     // add clinets data for each user 
     $user['clients'] = $temp; 
    } 

    // output 
    foreach($users as $user) 
     foreach($user->clients as $client) 
      foreach($client['projects'] as $project) 
       echo 'user-'.$project['user_id'].', clinet-'.$project['client_id'].', project-'.$project['name'].'<br>'; 

が私のためにこの出力を生成:

enter image description here

関連する問題