cakephp 在不使用视图的情况下保存 HABTM 关系的数据

Posted

技术标签:

【中文标题】cakephp 在不使用视图的情况下保存 HABTM 关系的数据【英文标题】:cakephp save a HABTM relation's data without using a View 【发布时间】:2012-02-20 14:30:05 【问题描述】:

我正在使用带有 mysql 的 Cakephp v.2.0。

我有两个模型,Candidate 和 Lottery 与 HABTM 关系相关。

我想在我的 mysql 数据库中保存这个 HABTM 关系的数据,但有两个限制:

1) 我没有使用视图,也就是说,我想手动构造作为保存函数中第一个参数传递的数据数组 - 但它的格式是什么?

2) 没有候选表,因为我的候选模型从 LDAP 加载数据(我已按照 http://bakery.cakephp.org/articles/psychic/2009/03/12/ldap-models-in-cakephp 的教程进行操作)。我只想保存在表彩票和连接表中,candidate_lotteries。

任何想法都将不胜感激。

【问题讨论】:

【参考方案1】:

只要您在模型中正确设置了关系,并且您确实拥有 HABTM 表,您就可以简单地执行以下操作:

$this->data['Candidate']['id'] = CANDIDATE_ID;
$this->data['Lottery']['id'] = LOTTERY_ID;
$this->Lottery->save($this->data);

这应该会在 HABTM 表中显示一条新记录。

【讨论】:

您当然可以根据需要将其他数据传递给data['Lottery'] 当然可以。很好的捕捉@lethal-guitar!我忘记了有时这对每个人来说都不是显而易见的。感谢您提及。

以上是关于cakephp 在不使用视图的情况下保存 HABTM 关系的数据的主要内容,如果未能解决你的问题,请参考以下文章

在 HABTM 的情况下,CakePHP 不会保存正确的数据

在不重新加载 web 视图的情况下更改 html 文本颜色

CakePHP hasAndBelongsToMany (HABTM) 删除加入记录

在不移动叠加视图的情况下裁剪和缩放图像,而是在 ImageView 中移动图像

CakePHP:保存从 MySQL 视图加载的模型

在 CakePHP 中使用 saveAll() 保存多个 hasMany 数据,而无需在视图中写入 id