插入 Laravel 中的两个表

Insert into two tables in Laravel

我有一个注册表单,在该表单中,用户可以 select 从下拉列表中选择 FarmerBuyer列表。如果用户 select Farmer 那么我想将新创建的 user_id 添加到 farmer table .如果用户 select Buyer 那么我想将新创建的 user_id 添加到 buyer table .

但现在的行为是当用户从下拉列表中选择 select Buyer 时。新创建的user_id保存在farmertable而不是buyertable.

如何将新建的user_id保存到对应的table中?

下面是我的代码:

$user = User::create([
        'username' => $data['username'],
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'group' => $data['group'], 
]);

$farmer = Farmer::make([
            'user_id' => $user->id,
]);

$user->farmer()->save($farmer);
return $user;

我认为你有几个问题:

首先,您没有使用您描述的支票;

there is select form that decide if user is farmer or buyer

其次,您只是在创建一个农民,与您描述的买家无关

if the user is buyer, then buyer table get his/her user_id

解决方案,您是否需要先使用检查,然后适当地创建那些 table 条目。

此外,请将您的代码包装在交易中:

DB::transaction(function(){
    // Your code here...
})

喜欢这样。

$decide = $data['select_option'];
if($decide == 'farmer'){
    $farmer = Farmer::create([
                'user_id' => $user->id,
    ]);
}
elseif($decide == 'buyer'){

    $buyer = Buyer::create([
                'user_id' => $user->id,
    ]);
}

谢谢大家的帮助,我找到了解决以下问题的最简单方法:

if ($user->group == 2) {
        $buyer = Buyer::create([
            'user_id' => $user->id,
        ]);
    }elseif ($user->group == 3) {
        $farmer= Farmer::create([
            'user_id' => $user->id,
        ]);
    }

    $user->save();

    return $user;