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));

マドンナだけがアーティストテーブルに保存され、関連する 2 人のアーティストは保存されず、結合テーブルには何も保存されません。

これを達成するには、データ配列をどのようにフォーマットする必要がありますか? または、最初にマドンナを保存し、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 に答える