estoy usando laravel y phpmyadmin y necesito agregar un campo de slug para entradas de 12K en mi base de datos.
Intenté usar una ruta para actualizar la columna vacía 'slug' con datos de slug:
Route::get('/slug', function(){ $needSlugs = entreprise::where('slug', '')->get(); foreach($needSlugs as $slug){ $slug->update([ 'slug' => Str::slug($slug->RS) ]); }});pero lleva mucho tiempo y devuelve un error después de cargar alrededor de 400 columnas y necesito comenzar de nuevo y me llevará horas terminar, busqué mucho y no encontré una buena solución para mi caso.
alguna buena forma de hacerlo por favor!!
PD: estoy usando el paquete sluggable-eloquent para cargar cualquier dato nuevo guardado en la base de datos.
12K filas no es nada. Por lo general, debería tomar solo unos segundos para completarse, puede haber otra razón por la que no se completa Probablemente se deba a que se agotó el tiempo de espera de la puerta de enlace u otras restricciones en su servidor. Intente ejecutarlo usando php artisan tinker , y también intente fragmentar sus registros.
$ php artisan tinker App\Models\entreprise::where('slug', '')->chunk(500, function($recs){ $recs->map(function($record){ $record->update([ 'slug' => Str::slug($record->RS) ]); }); });Prueba esto.
$needSlugs = entreprise::whereNull('slug')->update(["slug"=> DB::raw("replace(trim(lower(RS)), ' ', '-')")]);Nota: mantenga una copia de seguridad para fines de seguridad si son datos genuinos