@dayna
Slug - это текстовый идентификатор, обычно используемый в URL-адресах вместо числовых идентификаторов. В Laravel можно сгенерировать slug для таблиц, используя пакет Str и метод slug().
Например, допустим, у вас есть модель Post, и вы хотите сгенерировать slug для ее таблицы. Вот как это можно сделать:
1 2 3 4 5 6 7 8 9 10 |
use IlluminateSupportStr; public static function boot() { parent::boot(); static::creating(function ($post) { $post->slug = Str::slug($post->title); }); } |
Этот код создает обработчик события creating, который генерирует slug на основе заголовка поста ($post->title) и сохраняет его в поле slug.
1
|
php artisan make:migration add_slug_to_posts_table --table=posts |
1 2 3 4 5 6 |
public function up() { Schema::table('posts', function (Blueprint $table) { $table->string('slug')->unique()->after('title'); }); } |
Этот код добавляет строковое поле slug после поля title и устанавливает уникальный индекс на это поле.
1
|
php artisan migrate |
Теперь каждый раз при создании нового поста в таблице posts будет генерироваться уникальный slug на основе его заголовка.
@dayna
Затем вы можете использовать этот slug в URL-адресах, например, в маршрутах:
1
|
Route::get('posts/{slug}', 'PostController@show');
|
В вашем контроллере PostController вы можете получить пост по его slug:
1 2 3 4 5 6 |
public function show($slug)
{
$post = Post::where('slug', $slug)->firstOrFail();
// ...
}
|
Таким образом, вы можете генерировать и использовать уникальные slug для таблиц в Laravel.