2

我有一位艺术家拥有并属于许多相关艺术家,在这个例子中,我想在数据库中保存麦当娜和她的 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));

发生的情况是,艺术家表中只保存了麦当娜,两个相关的艺术家没有保存,连接表中没有保存任何内容。

应该如何格式化数据数组来实现这一点?还是我需要先保存麦当娜,然后获取 ID,然后将所有相关艺术家保存在不同的 saveAll() 中?

4

2 回答 2

2

据我所知,相关艺术家必须包含相关对象,这些对象具有与一些艺术家 ID相关的键。这是示例:

$test_data = array(
    'Artist' => array(
        'name' => 'Madonna'
     ),
    'Related' => array(
         'Related' => array(
             0 => '1',
             1 => '2'
         )
     )
);
于 2013-02-01T03:20:56.107 回答
0

您的数据必须采用这种格式。

Array
(
[0] => Array
    (
        ['Artist'] => Array
            (
                [name] => 'Madonna'
            )
        ['Related'] => Array
            (
                [name] => 'Kylie Minogue'
            )
    )
[1] => Array
    (
        ['Artist'] => Array
            (
                [name] => 'Madonna'
            )
        ['Related'] => Array
            (
                [name] => 'Cher'
            )
    )
)
于 2012-11-02T12:49:39.373 回答