boot () не может использовать переменную в обратном вызове create () - PullRequest
0 голосов
/ 12 марта 2020

При создании пользователя в User.php Я пытаюсь определить UUID, создать каталог, а затем добавить его к пользователю в БД. Папка успешно создается с UUID, но не будет передана в обратный вызов creating().

/**
    * Create the user when this class is called
    *
    * @return void
    */
public static function boot()
{
    // Setup parent
    parent::boot();

    // Create UUID
    $uuid = Str::uuid();

    // Create user directory on S3
    Storage::disk('s3')->makeDirectory('users/' . $uuid);

    // Assign UUID to new user
    self::creating(function ($model) {
        $model->id = $uuid;
    });
}

$model->id = $uuid; здесь не определено и не имеет значения.

1 Ответ

3 голосов
/ 12 марта 2020

Введите $uuid в закрытие следующим образом:

self::creating(function ($model) use ($uuid) {
        $model->id = $uuid;
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...