【发布时间】:2021-05-19 11:53:36
【问题描述】:
有没有办法在 CakePHP4.x 中将一个实体与另一个实体关联/分离? 类似于 Laravel 的? https://laravel.com/docs/8.x/eloquent-relationships#updating-belongs-to-relationships
例如,如果我创建一个新实体并像这样分配一个相关实体:
#in a controller
$entity = $this->Entity->newEmptyEntity();
$related = $this->Related->get(1);
$entity->set('related', $related);
这会将$related 绑定到$entity->related,但不会设置$entity->relation_id = 1。
我怀疑$this->Entity->save($entity) 会设置$entity->relation_id,但我不想保存它。
修复它的一种方法是:
$entity->set(['related_id' => $related->id ,'related', $related]);
看起来不是很优雅?
【问题讨论】:
-
我对 Laravel 不太熟悉,但从文档来看,
attach()的工作方式并非如此,因为它似乎只适用于多对多关系,外键可以不存在于源端(因此没有键可以添加到源实体),它实际上将数据插入数据库,因此可能需要源已经持久化?! -
是的,你是对的,attach() 用于多对多关系。 BelongsTo 与 Associate/dissociate laravel.com/docs/8.x/… 合作,这也符合我的要求。我已经用关联/分离而不是附加/分离更新了问题。
标签: cakephp cakephp-4.x