gpt4 book ai didi

php - 在 Laravel 中批量更新每行的特定条件

转载 作者:行者123 更新时间:2023-11-29 18:16:49 24 4
gpt4 key购买 nike

我正在使用 Laravel 开发一个数据库驱动的网站。现在我在更新数据库时遇到问题。我想运行批量更新。通常我是这样运行的。

 $data = [
[
'col_1'=>$value1
],
[
'col_1'=>$value2
],
[
'col_1'=>$value3
],
[
'col_1'=>$value4
]
];
MyTableObject::update($data)->where('col_2'=>$col_2_val);

正如您在上面的代码中看到的,where 子句仅检查要更新的所有行的一个条件。但我想要的是每行或查询都有不同的 where 子句条件。要使用 foreach 并对每一行运行查询,这将非常耗时,因为我必须更新很多行。为了演示它,它会是这样的。

$data = [
[
'col_1'=>$value1,
'col_2'=>$where_value_1 // This is not the column to be updated. That is for where clause.
],
[
'col_1'=>$value2,
'col_2'=>$where_value_2 // This is not the column to be updated. That is for where clause.
],
[
'col_1'=>$value3,
'col_2'=>$where_value_3
],
[
'col_1'=>$value4,
'col_2'=>$where_value_4
]
];
MyTableObject::update($data)->where('where_col_name'=>'col_2');

我找到了this link ,但答案并不明确和完整。在 Laravel 中可以做到吗?我该怎么做?

最佳答案

如果我理解正确,col_1 是您希望在更新中使用的值,col_2 是您要查询的值。尝试以下操作(可能需要一些调整)

collect($data)->each(function(array $row) {
MyTableObject::where('where_col_name', $row['col_2'])->update(['col_1' => $row['col_1']]);
});

关于php - 在 Laravel 中批量更新每行的特定条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com