@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.