我有一位艺术家拥有并且属于许多相关艺术家,在这个例子中我想将麦当娜和她的2位相关艺术家Cher和Kylie Minogue保存在数据库中。
DB: 2个表:艺术家(id,name,created)和artists_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));
只有Madonna保存在艺术家表中,两位相关艺术家都没有保存,连接表中没有保存任何内容。
如何格式化数据数组以实现此目的?或者我需要保存第一个麦当娜,并获取ID,然后将所有相关艺术家保存在另一个saveAll()?
答案 0 :(得分:2)
据我所知,相关艺术家必须包含相关对象,其中包含相关键 artist_id 。这是一个例子:
$test_data = array(
'Artist' => array(
'name' => 'Madonna'
),
'Related' => array(
'Related' => array(
0 => '1',
1 => '2'
)
)
);
答案 1 :(得分:0)
您的数据必须采用此格式。
Array
(
[0] => Array
(
['Artist'] => Array
(
[name] => 'Madonna'
)
['Related'] => Array
(
[name] => 'Kylie Minogue'
)
)
[1] => Array
(
['Artist'] => Array
(
[name] => 'Madonna'
)
['Related'] => Array
(
[name] => 'Cher'
)
)
)