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

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

Laravel 模型創建覆蓋

Laravel 模型創建覆蓋

PHP
動漫人物 2022-12-11 16:36:27
在我的 Laravel 項目中,我有不同的用戶類型,它們都有一個基本的用戶模型。以下是數據庫拓撲的簡要概念:users: - id - name - emailstudents: - age - user_idteachers: - budget - user_idemployee: - is_admin - user_id就我而言,每個Student, Teacher,Employee都有自己的User. 但是如果我想制作一個新的,Student例如,我必須同時制作一個Student和User模型。我知道 Laravel 中的觀察者模式可以使這項工作更容易,但我希望能夠以編程方式制作Student如下模型:$student = App\Student::create(['name' => 'Joe', 'email' => '[email protected]', 'age' => '20']);問題從那里變得更加復雜,因為Teacher模型也需要同時具有Employee模型和User模型。有沒有辦法覆蓋create我的模型上的方法,以便我可以傳遞User創建參數和Student參數?
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

您可以覆蓋該create方法并自己執行此操作。在您的Student模型類中添加:


public static function create($arr) {

    $user = User::create([

        'name' => $arr['name'],

        'email' => $arr['email']

    ]);


    $student = parent::create([

        'age' => $arr['age']

        'user_id' => $user->id

    ]);


    return $student;

}

您可以以類似的方式執行其他方法。


如果您的 Laravel 版本高于 5.4.*,請執行以下操作:


public static function create($arr) {

    $user = User::create([

        'name' => $arr['name'],

        'email' => $arr['email']

    ]);


    $student = static::query()->create([

         'age' => $arr['age']

         'user_id' => $user->id

    ]);


    return $student;

}


查看完整回答
反對 回復 2022-12-11
  • 1 回答
  • 0 關注
  • 120 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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