我有
MediaOrg- model, media_orgs - table name
table fields- id,name
public $hasAndBelongsToMany = array(
'className' => 'ContactPerson',
'joinTable' => 'contact_people_media_orgs',
'foreignKey' => 'media_org_id',
'associationForeignKey' => 'contact_person_id'
);
ContactPerson -model contact_person- table name
table_fields - id,name,designation,contact_number,ladline
public $hasAndBelongsToMany = 'MediaOrg'
ContactPeopleMediaOrg -model , table name-contat_people_media_orgs
table_fields - contact_person_id ,media_org_id
//now in controller saving values for media_org table
$this->MediaOrg->save($this->request->data)
$media_org_id=$this->MediaOrg->id;
//next in controller saving values for contact_person table
$this->ContactPerson->save($this->request->data)
$mcontact_person_id=$this->ContactPerson->id;
//next saving id's into many-to-many table
$contact_person_mediaorg_table=array('contact_person_id'=>$contact_person_id,
'media_org_id'=>$media_org_id );
$this->ContactPeopleMediaOrg->save($contact_person_mediaorg_table);
一切都运转良好。我不知道普通表中发生了什么
contact_person_media_org,数据正在添加3个主题。
第一次添加正确的id和下一次每次添加联系人的手机号码和地号与media_org_id
当我使用getDataSource()调试它时,我可以发现一些param正在传递给该公共表并添加到它。我不知道它是怎么发生的
(int) 6 => array('query' => 'INSERT INTO `go4ad`.`contact_people_media_orgs`
(`media_org_id`, `contact_person_id`) VALUES (?,?)',
'params' => array(
(int) 0 => '30',
(int) 1 => '55555555'
),
'affected' => (int) 0,
'numRows' => (int) 0,
'took' => (float) 1
我也可以找到一些BEGIN和COMMIT关键字。 实际上发生了什么......如果有人能帮助我..请帮助我。我坚持
答案 0 :(得分:0)
您应该使用saveAssociated()。总的来说,您的流程应该生成如下内容:
$this->request->data = array(
'MediaOrg' => array(
'id' => $media_org_id,
),
'ContactPerson' => array(
0 => $first_person_id,
1 => $second_person_id,
2 => $thurd_person_id,
),
);
$this->MediaOrg->saveAssociated($this->request->data);
它会向您的HABTM关系表(media_organization_contact_persons)添加行。现在,当您已经将行添加到数据库中并且想要添加连接时,这可以正常工作。如果您想在同一时间向表中添加数据,或者此答案未涵盖的任何内容,您可以阅读this article。