この例では、マドンナと彼女の 2 人の関連アーティスト、シェールとカイリー ミノーグをデータベースに保存したいと考えています。
DB: 2 つのテーブル:アーティスト (id、name、created) および artist_related (id、artist_id、related_id)
モデル関係のセットアップ:
<?php
class Artist extends AppModel {
public $hasAndBelongsToMany = array(
'Related' =>
array(
'className' => 'Artist',
'joinTable' => 'artists_related',
'associationForeignKey' => 'related_id',
'unique' => 'keepExisting'
)
);
次のようにデータを保存しようとしています。
$test_data = array(
'Artist' => array(
'name' => 'Madonna'
),
'Related' => array(
0 => array(
'name' => 'Kylie Minogue'
),
1 => array(
'name' => 'Cher'
)
)
);
$result = $this->saveAll($test_data, array('deep' => true));
マドンナだけがアーティストテーブルに保存され、関連する 2 人のアーティストは保存されず、結合テーブルには何も保存されません。
これを達成するには、データ配列をどのようにフォーマットする必要がありますか? または、最初にマドンナを保存し、ID を取得してから、関連するすべてのアーティストを別の saveAll() に保存する必要がありますか?