在我的 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;
}
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消