我在Laravel项目中与雄辩关系挣扎。
我有一个'用户'表和' user_lines'我的数据库中的表。 ' user_lines'表有一个' USER_ID'对应于' id' '用户'中的字段,在经典的主 - 细节关系中。
User模型与UserLine模型具有hasMany关系。 UserLine模型与User模型具有belongsTo关系。
在我的应用程序中,我有一个包含多个用户行的用户表单。在表单提交期间,可以添加,更改或删除这些用户行。到目前为止,我发现自己迭代提交的用户行并手动创建,更新和删除用户行。我觉得我错过了Eloquent提供的附加/分离/同步方法,但我似乎无法让它们发挥作用。
$user->lines()->attach or $user->lines()->sync
给我一个例外,告诉我这些是Illuminate \ Database \ Query \ Builder上未定义的方法。
$user->lines()->createMany($lines)
有效但只创建新行,它不会更新现有行并删除已删除的行。
答案 0 :(得分:0)
attach
,detach
和sync
方法适用于多对多关系,而不适用于一对多关系。因此,您需要迭代线并逐个添加或编辑它们。
答案 1 :(得分:0)
您的表关系一对多,要附加到此类关系,您应该使用save
,saveMany
或create
方法。
更新你可以做这样的事情:
$user->lines()->where('field',$something)->update($array);
attach
,detach
和sync
方法适用于多对多关系,而非一对多关系。