Вместо создания токена в конструкторе вы можете воспользоваться событиями модели Laravel . Короче говоря, это позволяет вам прослушивать событие (например, «создано», «обновлено» и т. Д.) И выполнять действие с этим событием. Если вы замените конструктор следующим, это должно решить проблему:
public static function boot()
{
self::created(function ($model) {
$model->update([
'token' = mb_substr(bin2hex(openssl_random_pseudo_bytes(32)),0,8);
]);
});
// If you're using the SoftDeletes trait, uncomment this line.
// static::bootSoftDeletes();
}
Вы создадите экземпляр вашей Car
модели в вашем контроллере, а затем событие модели обновит этот экземпляр вашим токеном.
В качестве отступления: поскольку токен генерируется случайным образом и, похоже, не полагается на какие-либо другие данные / функции, я не верю, что опускать эту строку стыдно:
'token' = mb_substr(bin2hex(openssl_random_pseudo_bytes(32)),0,8);
В метод create
в вашем контроллере. Исходя из того, что вы предоставили, это будет самый простой способ решить, что вам нужно.