Laravel 5.3 Observer не может добраться до модели

У меня есть модель Eloquent User в Laravel. Когда я создаю нового пользователя, я хочу автоматически создать для него токен. Я делаю это с наблюдателем. Но в обозревателе я не могу добраться до созданной модели, она хочет создать новую.

Моя модель пользователя:

namespace App;

use App\Observers\UserObserver;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

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

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

    public static function boot()
    {
        parent::boot();

        static::observe(UserObserver::class);
    }

}

Мой UserObserver

namespace App\Observers;

use App\User;

class UserObserver
{
    public function creating(User $user)
    {
        $user->token = str_random(30);
    }
}

Когда я создаю нового пользователя, я получаю исключение

QueryException в строке Connection.php 763:

SQLSTATE [23000]: нарушение ограничения целостности: 19 Не выполнено ограничение NOT NULL: users.name (SQL: вставить в значения "users" ("token", "updated_at", "creation_at") (JQYUmmMrRRJT64VcFVA8UzkpY019u6, 2016-10-31 14:33:35, 2016-10-31 14:33:35))

1 ответ

Похоже, вы не установили name, Вы, вероятно, делаете что-то вроде этого:

User:create(Request::all());

но нет name в запросе, поэтому он не будет заполнен. Но также вы установили name столбец не нулевой, поэтому получаю исключение

Другие вопросы по тегам