Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我正在做一个测试,如果数据库中没有用户,我想创建一个新用户_Php_Laravel - Fatal编程技术网

Php 我正在做一个测试,如果数据库中没有用户,我想创建一个新用户

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\

我正在制作一个测验模块,其中目前只有一个用户。因此,如果新用户进行测验,那么用户将被添加到数据库中,如果现有用户正在进行测验,我们只需更新硬币

我已经做了一个逻辑,但它不适合我

公共功能故事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用户->保存; } }
你的逻辑应该是这样的:

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行有一个拼写错误