Laravel Ошибка развертывания Forge с типизированным свойством php 7.4 в модели пользователя. - PullRequest
0 голосов
/ 19 апреля 2020

Я создаю новый sh новый проект в Laravel 7 с php 7.4 и на модели пользователя. У меня есть следующие свойства:

* The attributes that are mass assignable.
     *
     * @var array
     */
    protected array $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected array $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected array $casts = [
        'email_verified_at' => 'datetime',
    ];

и на Laravel В усадьбе все работает нормально, но когда Я хочу развернуть приложение с помощью Laravel Forge на UserSeeder. Я получил это сообщение:

PHP Fatal error:  Type of App\User::$casts must not be defined (as in class Illuminate\Foundation\Auth\User)

1 Ответ

1 голос
/ 19 апреля 2020

Причина, по которой вы получаете эту ошибку, заключается в том, что свойство $casts, определенное в родительском классе, не типизировано как свойство array, а в вашей модели.

Согласно PHP RF C: типизированные свойства 2.0 :

Типы свойств являются инвариантными. Это означает, что тип (не частного) свойства не может изменяться во время наследования ( это включает добавление или удаление типов свойств ).


Чтобы обойти эту проблему, я бы предложил просто удалить array из ваших унаследованных свойств.

Я бы также предложил прочитать эту статью для больше информации о типизированных свойствах и других PHP 7.4 изменениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...