Php 我正在做一个测试,如果数据库中没有用户,我想创建一个新用户
我正在制作一个测验模块,其中目前只有一个用户。因此,如果新用户进行测验,那么用户将被添加到数据库中,如果现有用户正在进行测验,我们只需更新硬币 我已经做了一个逻辑,但它不适合我 公共功能故事1_home_coinRequest$request { $coins=$request->input'coins'; $user\u id=Auth::user->id; $activity\u users=activity\u users::all; $found=false; 将每个$activity\u用户设置为$activity\u用户{ 如果$user\u id==$sctivity\u user->user\u id { $found=true; } 否则{ $found=false; } } 如果$found=true{ 活动\用户::其中[ ['user\u id','=',$user\u id], ['activity_id','=',1] ]->更新['coins'=>$coins]; } 否则{ $newactivity\u users=新活动\u用户; $newactivity\u users->userid=$user\u id; $newactivity\u users->activity\u id=1; $newactivity\u用户->硬币=$coins; $newactivity\u用户->保存; } }Php 我正在做一个测试,如果数据库中没有用户,我想创建一个新用户,php,laravel,Php,Laravel,我正在制作一个测验模块,其中目前只有一个用户。因此,如果新用户进行测验,那么用户将被添加到数据库中,如果现有用户正在进行测验,我们只需更新硬币 我已经做了一个逻辑,但它不适合我 公共功能故事1_home_coinRequest$request { $coins=$request->input'coins'; $user\u id=Auth::user->id; $activity\u users=activity\u users::all; $found=false; 将每个$activity\
你的逻辑应该是这样的:
public function story1_home_coin(Request $request)
{
$coins = $request->input('coins');
$user_id = Auth::user()->id;
$activity_users = activity_users::where('user_id',$user_id);
if($activity_users->count()){
activity_users::where([
['user_id', '=', $user_id],
['activity_id', '=', 1]
])->update(['coins' => $coins]);
}else{
$newactivity_users = new activity_users;
$newactivity_users->userid = $user_id;
$newactivity_users->activity_id = 1;
$newactivity_users->coins = $coins;
$newactivity_users->save();
}
}
在您的逻辑中,您在获取所有数据后通过循环到数据来检查用户,而您应该只获取相关的用户。代码中有两个问题会导致意外行为 首先,在foreach循环中,当您找到匹配的用户id时,您不会退出循环,因此您几乎总是将$find设置为false 例如,如果您正在查找用户_id 3,那么您需要查找用户1-5 用户_id==1->$found=false 用户_id==2->$found=false 用户_id==3->$found=true 用户_id==4->$found=false 用户_id==5->$found=false 这可以通过使用中断来解决;在您的循环中,如下所示:
public function story1_home_coin(Request $request)
{
$coins = $request->input('coins');
$user_id = Auth::user()->id;
$activity_users = activity_users::where('user_id',$user_id);
if($activity_users->count()){
activity_users::where([
['user_id', '=', $user_id],
['activity_id', '=', 1]
])->update(['coins' => $coins]);
}else{
$newactivity_users = new activity_users;
$newactivity_users->userid = $user_id;
$newactivity_users->activity_id = 1;
$newactivity_users->coins = $coins;
$newactivity_users->save();
}
}
将每个$activity\u用户设置为$activity\u用户{
如果$user\u id==$sctivity\u user->user\u id
{
$found=true;
打破
}
}
第二个问题是检查$FOND变量的行。实际上,您没有检查变量,而是设置变量:
if($found = true){
与此相比,
if($found == true){
我已经纠正了我的错误。我在上面代码的第8行有一个拼写错误