【发布时间】:2012-11-02 11:05:51
【问题描述】:
我有一位艺术家拥有并属于许多相关艺术家,在此示例中,我想将 Madonna 和她的 2 位相关艺术家 Cher 和 Kylie Minogue 保存在数据库中。
数据库: 2 个表: 艺术家(id、name、created)和艺术家相关(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));
发生的情况是 artists 表中只保存了 Madonna,两个相关的艺术家没有保存,连接表中没有保存任何内容。
应如何格式化数据数组以完成此操作?还是我需要先保存麦当娜,然后获取 id,然后将所有相关艺术家保存在不同的 saveAll() 中?
【问题讨论】:
标签: php mysql cakephp cakephp-2.0 has-and-belongs-to-many