0

私はそれを機能させるために3日間試みています.stack/forums/googleで見たものはすべて既に適用しています. サブスクライバー habtm subrcriberlist とサブスクライバー リストは、多くのサブスクライバーに属することができます。

/* Subscriber model*/
     public $hasAndBelongsToMany =
array(
    'Subscriberslists' => array(
        'className' => 'Subscriberslist',
        'joinTable' => 'subscribers_subscriberslists',
        'foreignKey' => 'subscriber_id',
        'associationForeignKey' => 'subscriberslist_id',
        'unique' => true
    )
);
/* Subscriberslist model*/
 public $hasAndBelongsToMany =
array(
    'Subscribers' => array(
        'className' => 'Subscriber',
        'joinTable' => 'subscribers_subscriberslists',
        'foreignKey' => 'subscriberslist_id', 
        'associationForeignKey' => 'subscriber_id',
        'unique' => true
    )
);

データは、私が見たすべての投稿に示されているようにフォーマットされています:

array(
'Subscriberslist' => '1',
'Subscriber' => array(
    'Subscriber' => array(
        (int) 0 => '1',
        (int) 1 => '2',
        (int) 2 => '3'
    )
)

その後、結合テーブルにデータを保存できませんでした。Cake は新しいサブスクライバーのみを保存します。これが私のコントローラーです:

if (!$this->Subscriber->saveAll($this->request->data){ //error}else{//no error}

私が間違っていることを教えていただけますか?ありがとう

4

1 に答える 1

0

サブスクライバーを挿入しようとしている場合、saveAllメソッドは次のようなものを期待していると言えます。

array(
    'Subscriber' => array(/* Single subscriber fields here */),
    'Subscriberslist' => array(
        /* List subscribers here */
    )
)

最初にメソッドを使用してみてくださいsaveAssociated。これは、保存しようとしているモデルの単一のインスタンスを想定していますが、関連付けられたデータを保持するためです。一度に複数のサブスクライバーを保存する必要がある場合は、ギアを変更して に戻りsaveAllます。

array(
    array(
        'Subscriber' => array(/* Single subscriber fields here */),
        'Subscriberslist' => array(
            /* List subscribers here */
        )
    ),
    array(
        'Subscriber' => array(/* Single subscriber fields here */),
        'Subscriberslist' => array(
            /* List subscribers here */
        )
    )
)

これがお役に立てば幸いです!

于 2013-04-13T14:08:08.920 に答える