如何解决使用Laravel Tinker和Carbon批量更新数据
由于无法迭代值,因此无法通过修补匠和Carbon大量更新数据
输入
>>> $d = Child::get('Birthday') //1st command
[!] Aliasing 'Child' to 'App\Child' for this Tinker session.
=> Illuminate\Database\Eloquent\Collection {#4195
all: [
App\Child {#4196
Birthday: "2015-03-26",},App\Child {#4197
Birthday: "2014-08-16",App\Child {#4198
Birthday: "2018-02-05",App\Child {#4199
Birthday: "1976-08-26",App\Child {#4200
Birthday: "1978-02-20",App\Child {#4201
Birthday: "2011-06-09",],}
>>> foreach($d as $ad) Child::query()->update(['Birthday' => Carbon\Carbon::parse($ad->Birthday)->format('Y:m:d')]) //2nd command
结果在这里
Illuminate\Database\Eloquent\Collection {#4204
all: [
App\Child {#4205
Birthday: "2011:06:09",App\Child {#4206
Birthday: "2011:06:09",App\Child {#4207
Birthday: "2011:06:09",App\Child {#4208
Birthday: "2011:06:09",App\Child {#4209
Birthday: "2011:06:09",App\Child {#4210
Birthday: "2011:06:09",}
我只想批量更新日期格式,但是如您所见,它会更新所有错误的内容
解决方法
Child :: query()-> update(['Birthday'=> Carbon \ Carbon :: parse($ ad-> Birthday)-> format('Y:m:d')]);
代码中的这一行会更新表中的每一行,因此对于每个循环的最后一轮 此代码将每一行更新到最后一个生日。
由于它是一个字符串列,因此您可以按以下方式重新设置其格式:
$d = Child::get(['id','Birthday']);
foreach($d as $ad)
Child::query()->where('id',$ad->id)->update(['Birthday' => Carbon\Carbon::parse($ad->Birthday)->format('Y:m:d')]);
中可能有很多格式
但是我必须说此列应该是日期列,而不是字符串
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。