私はこの質問が何度か尋ねられるかもしれないが、ある時点で私はその理由を理解することができません。ここでphpとmysqlを使用して多対多の関係を使ってデータを引き出す方法
は、私はこれら3つのテーブルを使用してデータを取得する必要が質問
私は多くの関係に多くのようにお互いの関係
表
Teacher Student Subject
+-----------+ +-------------+ +---------------+
| id| name | | id| name | | id| name |
+-----------+ +-------------+ +---------------+
| 1 | Ram | | 1 | Vikram | | 1 | Math |
| 2 | Ajay | | 2 | Sunil | | 2 | English |
| 3 | John | | 3 | Mohan | | 3 | Physics |
| 4 | Eric | | 4 | Pawan | | 4 | Chemistry |
| 5 | Manoj | | 5 | Deepak | | 5 | Biology |
| 6 | Shiv | | 6 | Alex | | 6 | Social Sci|
| | | | 7 | Shawn | | 7 | Hindi |
| | | | 8 | Mark | | 8 | History |
| | | | 9 | Joe | | | |
+-----------+ +-------------+ +---------------+
を持つ3台を持っています接合テーブル付き
接続テーブル(ジャンクション表)MySQLとPHP
と
Teacher_Subject Student_Subject
+-----------------------+ +---------------------------+
|teacher_id |subject_id | | student_id | subject_id |
+-----------------------+ +---------------------------+
| 1 | 7 | | 1 | 1 |
| 1 | 8 | | 1 | 3 |
| 2 | 1 | | 1 | 4 |
| 2 | 3 | | 1 | 5 |
| 3 | 2 | | 2 | 4 |
| 4 | 6 | | 2 | 7 |
| 5 | 4 | | 3 | 1 |
| 6 | 5 | | 3 | 4 |
| | | | 3 | 5 |
| | | | 4 | 2 |
| | | | 4 | 6 |
+-----------------------+ +---------------------------+
は私がどこ
$student = 'Vikram';
データを取得する必要がある例
のための単一のクエリ
と、このデータを取得する方法はあります
データこの配列になるようにしたい
$result = [
'name' => 'Vikram',
'subjects_teacher' => [
[
'subject' => 'Math',
'teacher' => 'Ajay'
],
[
'subject' => 'Physics',
'teacher' => 'Ajay'
],
[
'subject' => 'Chemistry',
'teacher' => 'Manoj'
],
[
'subject' => 'Biology',
'teacher' => 'Shiv'
]
]
];
掘る
ので、私は多くのチュートリアルを見て、それをGoogleで検索しているので、この場合には、私を助けるが、これを取得していないしてください関係。
がどこにある "お勧めできません"関係 テーブル?上の表の構造には、教師「Ajay」と被験者「数学」を関連付けることはできません。 –
あなたは「ちょうど」6つのテーブルすべてをいくつかの「where x.id = y.id」に接続し、結果を歩き回って配列を構築する必要があります。あなたが試したことはありますか? – Jeff
@AndrewLarsenもう一度見直してください – User97798