Php 用不同的值更新多个雄辩的模型
我有一个Php 用不同的值更新多个雄辩的模型,php,laravel,eloquent-relationship,Php,Laravel,Eloquent Relationship,我有一个父模型,它与子模型有许多关系。我想用一个特定且不同的值更新每个子对象中的单个属性。我该怎么做 我知道我可以使用体量赋值来更新每个子对象中具有相同值的属性,即 Parent::findOrFail($id)->children()->update([“属性”=>“新值”]) 但是我如何使用单独设置的值来实现这一点呢? e、 g.如果我的父母有4个孩子,我想这样设置 Parent::findOrFail($id)->children()->update([“property”=>[1,2,
父
模型,它与子
模型有许多关系。我想用一个特定且不同的值更新每个子对象中的单个属性。我该怎么做
我知道我可以使用体量赋值来更新每个子对象中具有相同值的属性,即
Parent::findOrFail($id)->children()->update([“属性”=>“新值”])
但是我如何使用单独设置的值来实现这一点呢?
e、 g.如果我的父母有4个孩子,我想这样设置
Parent::findOrFail($id)->children()->update([“property”=>[1,2,3,4]]
然后子1将有1个,子2将有2个,等等。类似的东西应该可以工作,在关系集合上循环:
$values=[1,2,3,4];
$parent
->孩子们
->每个(fn($child,$k)=>$child->update([“property”=>$values[$k]??null]);
或者,如果您使用的是不受支持的旧版本的PHP:
$values=[1,2,3,4];
$parent->children->each(函数($child,$k)使用($value){
$child->update([“属性”=>$values[$k]??null]);
});
更新
方法更新现有数据。在你的情况下,你有新的价值吗?然后您需要创建或使用updateOrCreate
方法。但不幸的是,5.7上没有任何updateOrCreateMany
方法。在8.x上,您可以使用方法更新children()
上的批量QueryLop并逐个更新,或者附加到update SQL语句中。如果需要,可以使用循环索引foreach(…->children()as$index=>child){$child->update(['property'=>$index]);}
,等等。有很多方法可以做到这一点;在子集合上的循环是最简单的。你试过什么?谢谢,成功了!