'string', 'slug' => 'string', 'template' => 'string', ]; /** * The fillable properties. * * @var string[] */ protected $fillable = ['name', 'slug', 'template']; /** * The validation rules. * * @var string[] */ public $rules = [ 'name' => 'required|string', 'template' => 'required|string', ]; /** * Overrides the models boot method. * * @return void */ public static function boot() { parent::boot(); self::saving(function ($template) { if (!$template->slug) { $template->slug = Str::slug($template->name); } }); } /** * Finds a template by the slug. * * @param string $slug * @param string[] $columns * * @return \Illuminate\Database\Query\Builder */ public static function forSlug($slug, $columns = ['*']) { $template = static::where('slug', '=', $slug)->firstOrFail($columns); return $template; } }