Laravel, черта для создания дополнительной записи во время сохранения? - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу сохранить дополнительную запись в базе данных при сохранении модели в laravel, моя модель выглядит следующим образом:

class Document extends Model
{
    use DocumentSetup;
}

И моя черта выглядит так:

trait DocumentSetup {
    protected static function boot()
    {
        static::saving(function ($model) {
            $documentSetup = new DocumentSetup();
            $documentSetup->document_id = $model->id;
            $documentSetup->is_public = false;
            $documentSetup->need_verification = true;
            $documentSetup->save();
        });

        parent::boot();
    }
}

Если я попытаюсь не получить никаких ошибок, но документ или документ не будут созданы, кто-нибудь знает, что я делаю здесь неправильно?

Моя идея - создать эту дополнительную модель при сохранении ...

1 Ответ

0 голосов
/ 11 ноября 2018

При использовании признаков для хуков жизненного цикла Eloquent, вы должны назвать метод загрузки boot[traitName] в вашем случае bootDocumentSetup. Вы также должны удалить вызов parent::boot() в признаке, поскольку такого родительского вызова нет. Если вы назовете это так, оно будет работать.

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

...