2016-12-13 6 views
0

ブレードビューで一部のデータをループしようとしています。ビュー内にネストされたリレーションをループする

enter image description here

は、だから私は、その後の日をループしてタスクを注文することができます。私は私の見解を持っているしたいと思い何

enter image description here

は以下の通りです:これは私のデータベースのセットアップです私がLaravelに経験したことはありません。私はカテゴリ別にタスクを最良の方法で注文するのが難しいです。

public function tasks() 
{ 
    return $this->hasMany('App\Task'); 
} 
:私は私の カテゴリーモデルで

public function days() 
{ 
    return $this->belongsToMany('App\Day'); 
} 

public function category() 
{ 
    return $this->belongsTo('App\Category'); 
} 

:私は私のタスクモデルで

public function tasks() 
{ 
    return $this->belongsToMany('App\Task'); 
} 

:私は私のモデルで

public function index() 
{ 
    $categories = Category::all(); 

    return view('app.blade.php', compact('categories')); 
} 

をしかし、どのように、私は日によってそれらを注文することを確認して、カテゴリ別に行うことができます:私のコントローラでは、私は今だけ持っていますか?大いに感謝します。

+0

少なくとも[ManyToMany](https://laravel.com/docs/5.3/eloquent-relationships#many-to-many)の関係ではピボットテーブルが必要です。 –

+0

@BasheerAhmed、はいごめんなさい。私の写真は正しくありませんでした。今は正しいはずです。 – nielsv

答えて

2

あなたは、次のよう試すことができます。

$days = Days::with('tasks.category')->get(); 

$days = $days->map(function ($day) { 
    $day->tasks = $day->tasks->groupBy('category_id'); 

    return $day; 
}); 

それはGROUPBY()メソッド

dd($days); 

後に変換され、どのようにそれを確認した後、あなたのビューで、あなたのように行うことができます。

@foreach ($days as $day) 
    {{ $day->name }} 
    @foreach ($days->tasks as $tasks) 
     {{ $tasks->first()->category->name }} 
     @foreach ($tasks as $task) 
      {{ $task->name }} 
     @endforeach 
    @endforeach 
@endforeach 

注 - テストしていませんが、試してみることができます。

関連する問題