为数据库中的现有数据生成 slug 字段
generate slug field for an existing data in database
我正在使用 laravel 和 phpmyadmin,我需要为我的数据库中的 12K 条目添加 slug 字段。
我尝试使用一个路由来更新空的 'slug' 列和 slug 数据:
Route::get('/slug', function(){
$needSlugs = entreprise::where('slug', '')->get();
foreach($needSlugs as $slug){
$slug->update([
'slug' => Str::slug($slug->RS)
]);
}});
但这需要很多时间,而且 returns 在处理大约 400 列后出现错误,我需要重新开始,这将花费我几个小时才能完成,我搜索了很多但没有找到对我来说很好的解决方案。
请问有什么好的方法!!
PS : 我正在使用 sluggable-eloquent 包来插入数据库中任何新保存的数据。
12K 行不算什么。它通常只需要几秒钟就可以完成,可能还有其他原因导致它没有完成
可能是因为网关超时或服务器上的其他限制。
使用 php artisan tinker
尝试 运行,并尝试对记录进行分块。
$ php artisan tinker
App\Models\entreprise::where('slug', '')->chunk(500, function($recs){
$recs->map(function($record){
$record->update([
'slug' => Str::slug($record->RS)
]);
});
});
试试这个。
$needSlugs = entreprise::whereNull('slug')->update(["slug"=> DB::raw("replace(trim(lower(RS)), ' ', '-')")]);
注意:为安全起见,如果是正版数据,请保留备份
我正在使用 laravel 和 phpmyadmin,我需要为我的数据库中的 12K 条目添加 slug 字段。
我尝试使用一个路由来更新空的 'slug' 列和 slug 数据:
Route::get('/slug', function(){
$needSlugs = entreprise::where('slug', '')->get();
foreach($needSlugs as $slug){
$slug->update([
'slug' => Str::slug($slug->RS)
]);
}});
但这需要很多时间,而且 returns 在处理大约 400 列后出现错误,我需要重新开始,这将花费我几个小时才能完成,我搜索了很多但没有找到对我来说很好的解决方案。
请问有什么好的方法!!
PS : 我正在使用 sluggable-eloquent 包来插入数据库中任何新保存的数据。
12K 行不算什么。它通常只需要几秒钟就可以完成,可能还有其他原因导致它没有完成
可能是因为网关超时或服务器上的其他限制。
使用 php artisan tinker
尝试 运行,并尝试对记录进行分块。
$ php artisan tinker
App\Models\entreprise::where('slug', '')->chunk(500, function($recs){
$recs->map(function($record){
$record->update([
'slug' => Str::slug($record->RS)
]);
});
});
试试这个。
$needSlugs = entreprise::whereNull('slug')->update(["slug"=> DB::raw("replace(trim(lower(RS)), ' ', '-')")]);
注意:为安全起见,如果是正版数据,请保留备份