教义 - 在多对多关系表中插入记录

Posted

技术标签:

【中文标题】教义 - 在多对多关系表中插入记录【英文标题】:doctrine - Inserting records in many to many relationship table 【发布时间】:2012-02-29 17:40:17 【问题描述】:

我有两个模型PropertyAmenity,它们之间的关系是多对多的。参考类是PropertyAmenity,当我想将单个记录插入一个模型时,这对我来说很容易。

插入Property

$property = new Property();
$property->serial = 'SER09088';
$property->title = 'Some title';
$property->save();

并且将记录插入到 Amenity 中

$amenity = new Amenity();
$amenity->name = 'Swimming Pool';
$amenity->save();

我想要做的是将现有设施添加到Property,其记录保存在参考类PropertyAmenity 中,例如类似的东西。

$property = new Property();
$property->serial = 'SER09088';
$property->title = 'Some title';
$property->PropertyAmenity->amenity_id[] = 1;
$property->save();

当我尝试上面的代码时,它给了我以下异常

PropertyAmenity 不支持添加

情况是我从一个表单,一个用户那里收集集体信息。例如,用户输入与Property 相关的所有值,然后从表单中选择现有的Multiple Amenities 并提交。我需要保存属性表中的属性和property_amenity 表中的选定设施,其中包含两列property_idamenity_id,如何在学说中插入这个值?

【问题讨论】:

【参考方案1】:

经过一番挖掘,我自己找到了解决方案,正如预期的那样,它很容易实现。我唯一要做的改变是。

从这里

$property->PropertyAmenity->amenity_id[] = 1;

$property->PropertyAmenity[]->amenity_id = 1;
$property->PropertyAmenity[]->amenity_id = 3;
$property->PropertyAmenity[]->amenity_id = 5;

它有效,希望它可以帮助某人:)

【讨论】:

以上是关于教义 - 在多对多关系表中插入记录的主要内容,如果未能解决你的问题,请参考以下文章

我可以在多对多关系的联接表中添加非 Id 字段吗?

在多对多相关表中进行高效搜索

教义多对多关系问题

教义中的多对多关系

Entity Framework 6 Recipes 2nd Edition(10-9)译 -> 在多对多关系中为插入和删除使用存储过程

如何在多对多表上级联删除