函数 return 不调用 Laravel 5.8 中的其他条件

Function return doesnt call else condition in Laravel 5.8

我有一个大函数,它调用了很多其他发出 API 请求的函数 对于 BlackBoard,我的问题是,在这个主要功能中,我创建了我的用户并将他签到当前课程,但实际上我们遇到了这种情况:同一个用户已经在 BlackBoard 中注册了,所以我做了一个更新功能,具体案件。但是那个 main 函数都在一个 try catch 块中,所以每次我调用方法时:

$userSalvo = $bd->createUser($user)

并且用户已经存在于 BlackBoard 数据库中,他立即停止我的函数并调用 catch 块,显然得到异常,但我需要如果该用户已经存在,他从这个请求中回来并转到下一个方法:

$userSalvo = $bd->updateUser($user, $userId);

我已经尝试将其放入 if 语句中,但它无法正常工作:

                    if($userSalvo = $bd->createUser($user))
                    {
                        dd('create');
                        $user->id = $userSalvo['id'];
                    }else
                    {
                        dd('update');
                        $userSalvo = $bd->updateUser($user, $userId);
                        $user->id = $userSalvo['id'];
                    }

有人知道我该怎么做吗?

这是我要调用的 API 方法 update/create:

     public function updateUser($user, $userId)
    {
        $user->dataSourceId = $this->dataSourceId;
        return $this->bd->patch("/users/{$userId}", json_decode(json_encode($user), true));
    }
    
    public function createUser($user)
    {
        $user->dataSourceId = $this->dataSourceId;
        return $this->bd->post("/users", json_decode(json_encode($user), true));
    }

如果您不想重构代码,则应使用 try-catch 块。它的声音是你的 if 条件在 'createUser' 被调用时死亡。

而是尝试用这个来替换整个 if 语句。

try{
    $userSalvo = $bd->createUser($user)
}catch(Exception $e){
    $userSalvo = $bd->updateUser($user, $userId);
}

这是假设定义了 $user 和 $userId。