次のスキーマがあります。
+------------+
| categories |
+------------+
| id |
+------------+
+-------------+
| sections |
+-------------+
| id |
| category_id |
+-------------+
+------------+
| questions |
+------------+
| id |
| section_id |
+------------+
+------------+
| clients |
+------------+
| id |
+------------+
+-------------------+
| client_questions |
+-------------------+
| client_id |
| question_id |
+-------------------+
ご覧のとおり、質問はセクションに分かれており、セクションはカテゴリに分かれています。
システムの管理者は、個々のクライアントごとに質問のオンとオフを切り替えることができるので、 client_questions を作成して、クライアントと質問の間に多対多の関係を作成します。
ここで、Eloquent の優れた機能を利用してクライアントのカテゴリを取得したいと思います (すべての質問を一覧表示するため) が、クエリ ビルダーについて頭を悩ませているようには見えません。
基本的に、私は現在、モデルで定義した多対多の関係を介して $client->questions を実行できます。
public function questions() {
return $this->belongsToMany(Question::class,'client_questions','client_id','question_id');
}
しかし、分離の程度を考慮して、クライアントとカテゴリ間で同じことを行う方法を理解できないようです。
$client->categories
基本的には、インタビュー全体をリストアップできるようにしたいと思います。
@foreach( $client->categories as $category)
@foreach( $category->sections as $section)
@foreach( $secion->questions as $question )
{{ $question->question }}
@endforeach
@endforeach
@endforeach