Вы можете использовать пакет Sluggable для создания слагов в вашем проекте. Этот пакет предоставляет черту, которая генерирует уникальный слаг при сохранении любой модели Eloquent.
Установка Вы можете установить пакет с помощью composer:
`composer require spatie/laravel-sluggable`
Вот пример того, как реализовать черта:
namespace App;
use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
use Illuminate\Database\Eloquent\Model;
class YourEloquentModel extends Model
{
use HasSlug;
/**
* Get the options for generating the slug.
*/
public function getSlugOptions() : SlugOptions
{
return SlugOptions::create()
->generateSlugsFrom('name')
->saveSlugsTo('slug');
}
}
И также не забудьте добавить поле slug в таблицу базы данных. Используйте Laravel Migration для редактирования вашей текущей таблицы.
Пример ::
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateYourEloquentModelTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('your_eloquent_models', function (Blueprint $table) {
$table->increments('id');
$table->string('slug'); // Field name same as your `saveSlugsTo`
$table->string('name');
$table->timestamps();
});
}
}
И затем, если вы хотите использовать этот слаг в качестве имени маршрута, не забудьте использовать Laravel неявная привязка модели маршрута в файле вашей модели:
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
Я думаю, это поможет вам