我有一个注册表,用户可以从下拉列表中选择他们是农民还是买方。如果用户选择农民,那么我想将新创建的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;
答案 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;