Я не уверен, почему вы хотели бы иметь столбец слагов в таблице пользователей в первую очередь, но вы можете установить слаг автоматически при вставке / обновлении пользователя, вы можете использовать События модели Laravel или Наблюдатели Laravel .Интересующее вас событие - это событие saving
, которое вызывается непосредственно перед обновлением / созданием пользователя в базе данных.
В качестве альтернативы вы также можете использовать мутаторы Laravel , чтобыесли задано свойство first_name или last_name, свойство slug также обновляется.
Кроме того, вы можете использовать вспомогательный метод Laravel str_slug () .Который может преобразовать строку в слаг.
Ниже приведен пример с наблюдателями:
app / Observers / UserObserver.php
namespace App\Observers\UserObserver;
use Cartalyst\Sentinel\Users\EloquentUser;
class UserObserver
{
public function saving(EloquentUser $user)
{
$user->slug = str_slug($user->first_name . ' ' . $user->last_name);
}
}
app / Providers / AppServiceProvider.php
namespace App\Providers;
use Cartalyst\Sentinel\Users\EloquentUser;
use App\Observers\UserObserver;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
EloquentUser::observe(UserObserver::class);
}
}
Теперь везде, где вы делаете что-то вроде:
$user = Sentinel::register([
'first_name' => 'John',
'last_name' => 'Cena',
'email' => 'JohnCena@example.com'
'password' => 'justanexample'
]);
или
$user->save();
ПользовательСлизняк также будет сохранен.