插入Laravel中的两个表

时间:2019-07-05 06:17:00

标签: laravel eloquent crud

我有一个注册表,用户可以从下拉列表中选择他们是农民还是买方。如果用户选择农民,那么我想将新创建的user_id添加到农民表中。如果用户选择买方,那么我想将新创建的user_id添加到买方表中。

但是现在的行为是用户从下拉列表中选择买方。新创建的user_id将保存在农民表中,而不是在买方表中。

如何将新创建的user_id保存到相应的表中?

下面是我的代码:

$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;

3 个答案:

答案 0 :(得分:0)

我认为您有几个问题:

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

  

有一些选择表单可以决定用户是农民还是买家

第二,您只是创建一个农民,与您描述的买家无关

  

如果用户是买方,则买方表将获得其user_id

解决方案,您需要首先利用检查,然后适当地创建那些表条目。

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

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

答案 1 :(得分:0)

这样做。

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

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

答案 2 :(得分:0)

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

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;