Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用不同的值更新多个雄辩的模型_Php_Laravel_Eloquent Relationship - Fatal编程技术网

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]);}
,等等。有很多方法可以做到这一点;在
子集合上的循环是最简单的。你试过什么?谢谢,成功了!