Laravel 5.8:SQLSTATE[42S22]:未找到列:1054 未知列

时间:2021-07-26 06:35:36

标签: php laravel eloquent laravel-5.8

我有一个名为 user_wallet 的表,如下所示:

enter image description here

然后在控制器上,我尝试了这个:

try {
    if ($request->pay_wallet == '1') {
        $us_id = Auth()->user()->usr_id;
        $user_wallet = UserWallet::find('user_id', $us_id);
        dd($user_wallet);
    }
}catch (\Exception $e) {
    dd($e);
}

但我收到此错误:

SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“2”(SQL:从 2 中选择 user_wallet,其中 user_wallet。{{ 1}} = user_id 限制 1)

但是,正如您在图片中看到的,有两个钱包的 id 为 2。

所以这里出了什么问题?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

find 方法只对 id 有效,所以最好使用 where 子句

$user_wallet = UserWallet::where('user_id', $us_id);

答案 1 :(得分:0)

我觉得你用 find() 错了,这个方法只接受一个参数,就是你要查找的主键的值。因为您在数据透视表中并且没有 id, 您必须在第一次出现时使用 firstWhere('user_id', $us_id),否则您必须为数据透视表重写 find() 方法。

但请注意,一个用户可能有多个钱包,因此最好询问他们使用哪个钱包。