0
私はA 複雑なアソシエーション - CakePHPの3.xの[ネストされたbelongsToMany]
のように参加コンプレックスを持っているABテーブル ABは、多くのCに所属投げた多くのBに属しているABCテーブルを投げ
今私の問題はどのようにあります私はテーブルABCまでの結果を含むコントローラAのデータを得ることができます。 マイデータベース構造が
表A(ID、名前、コード) 表B(ID、名前、コード) 表C(ID、名前、コードで直接Aに関連し、テーブルABC
を見つけることはありません) 表AB(ID、A_ID、B_ID、料金) 表のABC(ab_id、C_ID、opt_date、TNO)
私はABC
$this->A->find('list',[
contain => ['B']
]);
のためのデータを取得する方法がわからクエリの下に使用してBに接続することはできませんが、 ここで
私は私の本当のスキーム
1. courses (id, name, course_code, etc...)
2. sessions (id, name, status, start_date, end_date)
3. seats (id, name, description, metadata, status)
4. courses_sessions (id, course_id, session_id, programme_coordinator, academic_coordinator, status)
5. courses_sessions_seats (id, courses_session_id, seats_id, no_seats)
現在の関係にそれを変更しています
a) courses belongsToMany sessions using courses_sessions
b) courses_sessions belongsToMany seats using courses_sessions_seats
私はケース2がない上可能であれば知っているが、私は何をしたいことでコースの詳細を示すようになっていません1セッションあたりの利用可能な座席数
それはあなたが、私は、テーブルスキーマを考える何EDIT
here in docsそれについて読むことができます。この
$this->A
->find()
->contain([
'B' => ['C']
]);
または
$this->A
->find()
->contain([
'B' => function($q) {
return $q->contain(['C']);
}]);
のようになります要するに
はちょうど2つのフィールドを返すんリストを検索することである
を使用するコースの例観点からすべてのデータを取得するには配列[primary_key => display_field]として他のフィールドは選択されません。 – icebreaker
https://book.cakephp.org/3.0/en/orm/associations.html#using-the-through-optionはドキュメントを見ることです – icebreaker