Laravel,将现有实体添加到实体集合
我正在尝试将现有实体添加到实体集合,如Laravel,将现有实体添加到实体集合,laravel,eloquent,Laravel,Eloquent,我正在尝试将现有实体添加到实体集合,如 $entity->collection->push(entity::where('field','value')->first()); [...] //当我记录$entity时,我会在$entity->collection中看到新实体 $entity->save(); //但数据库上什么都没有 你知道为什么它不保存实体吗?有很多案例 假设$entity是雄辩的实例,而collection是表示有许多关系的神奇属性,那么您有如下情况: 类实体扩展模型 {
$entity->collection->push(entity::where('field','value')->first());
[...]
//当我记录$entity时,我会在$entity->collection中看到新实体
$entity->save();
//但数据库上什么都没有
你知道为什么它不保存实体吗?有很多案例 假设
$entity
是雄辩的实例,而collection
是表示有许多关系的神奇属性,那么您有如下情况:
类实体扩展模型
{
//...
公共功能集合()
{
返回$this->hasMany(实体:类);
}
//...
}
然后,collection
是访问$entity->collection()->get()
的唯一捷径,因此它不能用于变异数据库
相反,你可以打电话
$entity->collection()->保存(
实体::其中('field','value')->first()
);
据
属于造口
多对多关系具有方法attach
,该方法接受相关记录的键作为第一个参数:
$entity->collection()->保存(
//假设关系是由主键建立的
实体::where('field','value')->first()->getKey()
);
这里有完整的文档-您在下面提到的,这是一个重要的信息
您可以阅读更多有关在中管理多对多关系的信息
但简而言之,您希望使用->attach($entity)
因此,您的代码应该是:
$entity->collection()->附加(
实体::where('field','value')->first()->getKey()
);
save
不起作用,因为该实体已存在,只应用于将新实体保存到该数据库中,并同时将它们附加到关系中。我的集合是一个目录
。所以我按照您的建议尝试了$entity->collection()->save(entity::where('field','value')->first())
在这种情况下,您可以使用->attach($id)
。请检查我的最新答案。