Php 将laravel用户创建数据传递到存储过程

Php 将laravel用户创建数据传递到存储过程,php,laravel,Php,Laravel,我有一个存储过程,我试图在创建时使用来自用户模型的数据在laravel中调用它。该过程使用2个参数手动运行良好。就过程而言,第一个参数是CHAR,20,第二个是整数 因此,一旦保存了用户,我只需获取状态和新创建的ID,将它们作为过程的参数传递到方法调用中,然后执行过程 当这种情况发生时,我没有得到任何错误,但记录没有更新,我一辈子也不知道为什么。我认为这可能与数据类型有关,但我不明白为什么它不能与我拥有的数据类型一起工作 有什么我遗漏的吗 $user->save(); //This

我有一个存储过程,我试图在创建时使用来自用户模型的数据在laravel中调用它。该过程使用2个参数手动运行良好。就过程而言,第一个参数是CHAR,20,第二个是整数

因此,一旦保存了用户,我只需获取状态和新创建的ID,将它们作为过程的参数传递到方法调用中,然后执行过程

当这种情况发生时,我没有得到任何错误,但记录没有更新,我一辈子也不知道为什么。我认为这可能与数据类型有关,但我不明白为什么它不能与我拥有的数据类型一起工作

有什么我遗漏的吗

 $user->save();

 //This dumps the correct values
 dd($user->status . $user->id);

 $updateUser = new userInfo();
 $updateUserInfo = $updateUser->updateUserStatus($user->status,$user->id);
 function updateUserStatus(string $status, $userID){
    $stmt = \DB::connection('odbc')->getPdo()->prepare('CALL UPDATE_STATUS(?,?)'); 
    $stmt->bindParam(1, $status, PDO::PARAM_STR, 20);
    $stmt->bindParam(2, $userID, PDO::PARAM_INT);
    $stmt->execute();
 }

您可以这样调用该过程

function updateUserStatus(string $status, $userID){ 
  $stmt = \DB::SELECT('CALL UPDATE_STATUS($status, $userID)');
}

这是我执行存储过程的方式:

DB::select('call UPDATE_STATUS(?, ?)', [ $status, $userID ]);

不过,我用这种方式调用了其他几个过程,它们工作得很好。这一个,虽然没有错误,只是没有更新您是否尝试过使用
try-catch
块来确保它不会自动失败?我在它周围放置了一个try/catch,就像这样
}catch(\Exception$e){return$e->getMessage();}
但是页面仍然加载,数据库@nakov上没有更新您是否尝试过另一种更新方法,例如我在上面给出的方法,只是为了确保它不在您的代码中?因为我没有其他想法,所以我给出的示例是我使用存储过程的方式,它对我来说很好。好的,我尝试了上面的方法,并在意识到需要从参数中删除长度参数后最终得到了它。谢谢