0

我正在尝试 3 天让它工作,已经应用了我在堆栈/论坛/谷歌上看到的所有内容。一个订阅者 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 回答