亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

User.php boot() 方法在用戶注冊時被多次調用

User.php boot() 方法在用戶注冊時被多次調用

PHP
偶然的你 2022-10-28 14:45:49
當使用內置的 Laravel 7 功能創建用戶時,我boot()在我的 User 模型上調用該方法,以便為新用戶分配 UUID。我遇到的問題是,由于某種原因,啟動方法 get 總共調用了 4 次,導致在 S3 上創建了 4 個不同的目錄。應用程序/用戶.php/**    * Create the user when this class is called    *    * @return void    */protected 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) use ($uuid) {        $model->id = $uuid;    });}這是在創建時向用戶添加字段的正確方法嗎?我嘗試使用該RegisterController.php -> create()方法添加它,但它不會向用戶添加任何內容,并導致錯誤提示 ID 需要默認值。
查看完整描述

1 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

每當要創建對象時都會調用 boot 方法(不僅僅是持久化,這creating將是做什么的)。每當 Laravel 使用 Auth 函數時,都會發生這種情況,例如,獲取當前用戶,因此需要多次調用來引導。


parent::boot()您應該將所有內容放在創建閉包內的引導中(除了調用):


protected static function boot()

{

    // Setup parent

    parent::boot();


    self::creating(function ($model) {


        // Create UUID

        $uuid = Str::uuid();


        // Create user directory on S3

        Storage::disk('s3')->makeDirectory('users/' . $uuid);


        $model->id = $uuid;

    });

}

不再需要use ($uuid)on 功能。


查看完整回答
反對 回復 2022-10-28
  • 1 回答
  • 0 關注
  • 85 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號