使用 laravel tinker 和 Carbon 批量更新数据
Using laravel tinker and Carbon to mass update data
我在使用 tinker 和 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')]);
你代码中的这一行更新 table 中的每一行,所以在最后一轮 for each 循环中
此代码将每一行更新为最后一个生日。
因为它是一个字符串列,您可以像这样重新格式化它:
$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')]);
中有很多您可能会喜欢的格式
但我必须说这一列应该是日期列,而不是字符串
我在使用 tinker 和 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')]);
你代码中的这一行更新 table 中的每一行,所以在最后一轮 for each 循环中 此代码将每一行更新为最后一个生日。
因为它是一个字符串列,您可以像这样重新格式化它:
$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')]);
中有很多您可能会喜欢的格式
但我必须说这一列应该是日期列,而不是字符串