Добрый день, друзья.
Вычитал, что создание метода-преобразователя, наподобие:
public static function setSlugAttribute ($value) {
$this->attributes['slug'] = Str::slug(mb_substr($this->title, 0, 50), '-');
}
Автоматически запишет сгенерированную строку в нужное поле. В данном случае, я преобразовываю кириллический title в латиницу и передаю её для поля slug. Исходя из документации, данный метод автоматически должен запуститься, сгенерировать slug и загрузить его в таблицу. Но в итоге поле Slug остаётся пустым.
Что не так?
Вот код контроллера и модели:
<?php
//Контроллер вызывающий метод модели
public function submitArticle(Request $request) {
Article::create($request->all());
}
//Сама модель
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class Article extends Model
{
protected $table = 'posts';
protected $fillable = ['title', 'slug', 'description', 'post', 'cover_img', 'created_at', ' updated_at'];
public static function setSlugAttribute ($value) {
$this->attributes['slug'] = Str::slug(mb_substr($this->title, 0, 50), '-');
}
}