テーブルの構造から始めます。hasOne リレーションシップを使用して Tutors テーブルにリンクされた Contacts テーブルがあります。Tutors テーブルは、結合テーブルとして Disciplines_Tutors との HABTM リレーションシップを使用して Disciplines テーブルとリンクされます。これで、Contacts 属性と Tutors 属性の両方が 1 つの統合された連絡先フォームにまとめられました。Disciplines テーブル属性についても同様です。連絡先とチューターをそれぞれのテーブルに保存できますが、Disciplines_Tutors 結合テーブルに保存できません。
以下は、理解しやすいようにテーブル構造です。
先生の追加フォームから保存する場合、この問題は発生しません。完璧に保存されます。
連絡先テーブルには、id、独自の属性があります Tutors テーブルには
、id、独自の属性、contact_id
があります Disciplines テーブルには、id、discipline
Disciplines_Tutors テーブルには、id、discipline_id、tutor_id があります
統合された連絡フォームでは、利用可能な分野を表示して選択することができます。ただし、保存する場合、結合テーブルには保存されません。
家庭教師モデル:
public $hasAndBelongsToMany = array(
'Discipline' => array(
'className' => 'Discipline',
'joinTable' => 'disciplines_tutors',
'foreignKey' => 'tutor_id',
'associationForeignKey' => 'discipline_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
規律モデル:
public $hasAndBelongsToMany = array(
'Tutor' => array(
'className' => 'Tutor',
'joinTable' => 'disciplines_tutors',
'foreignKey' => 'discipline_id',
'associationForeignKey' => 'tutor_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
DisciplinesTutor モデル:
public $belongsTo = array(
'Tutor' => array(
'className' => 'Tutor',
'foreignKey' => 'tutor_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Discipline' => array(
'className' => 'Discipline',
'foreignKey' => 'discipline_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
ContactsController には次のものがあります。
$disciplines = $this->Contact->Tutor->Discipline->find('list');
public function add セクションで。したがって、選択リストの検索が可能になります。
Tutors、Disciplines、DisciplinesTutors コントローラはすべて saveAll メソッドを利用しています。
統合された連絡先フォームの追加フォーム。それは持っています:
echo $this->Form->input('Tutor.Discipline',array('type'=>'select','multiple'=>true));
これにより、選択する分野のリストを取得できます。
他にどのような情報が必要かわかりません。お気軽にお尋ねください。この質問に追加します。
また、私は CakePHP にまったく慣れていないので、簡単に教えてください。
ありがとうございました!