3 回答
TA贡献1777条经验 获得超10个赞
因为$myModel->domicile()->save($my_array);
完全不同$myModel->domicile->save($my_array);
:
$myModel->domicile()
将产生一个BelongsTo
对象,不支持save
因为save
是HasMany
实例的方法,而不是BelongsTo
你应该使用的实例associate(YourModel)
$myModel->domicile
将产生一个Model
支持该save(array)
方法的关联元素的对象,但该数组是一个options
数组,正如 api 所说https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Model.html#method_save
所以换句话说,如果你有一个(地址)对多(住所)的关系,如果你想与地址关联一个或多个住所,你必须使用save
或saveMany
(https://laravel.com/api/5.7 /Illuminate/Database/Eloquent/Relations/HasMany.html#method_save),如果您想将地址关联到住所,您应该使用associate
(https://laravel.com/api/5.7/Illuminate/Database/Eloquent/ Relations/BelongsTo.html#method_associate )...请记住,如果要执行此操作,则应使用括号调用属性,以便返回HasMany
对象或BelongsTo
对象,而不是模型或集合(如果你调用不带括号的属性,你会得到)
TA贡献1846条经验 获得超7个赞
save为了保存belongsTo关系而不是使用该函数,您必须使用该fill函数。
这样:
$myModel->domicile->fill($my_array);
$myModel->domicile->save();
TA贡献1877条经验 获得超6个赞
您必须使用associate()+save()来存储 BelongsTo 关系:
$myModel->domicile()->associate($domicile);
$myModel->save();
- 3 回答
- 0 关注
- 150 浏览
添加回答
举报