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

Laravel 5.8: SQLSTATE[42S22]: Column not found: 1054 Unknown column

我有一个叫 user_wallet 的 table,像这样:

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

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 'field list' 中的未知列“2”(SQL:select 2 来自 user_wallet 其中 user_wallet.id = user_id 限制 1)

然而如图所示,有两个 user_id 为 2 的钱包。

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

我觉得你用的find()错了,这个方法只接受一个参数,就是你要找的主键的值。因为你在一个 pivot table 中并且没有 id 存在, 您将不得不在第一次出现时使用 firstWhere('user_id', $us_id),否则您将不得不为枢轴 table.

重写 find() 方法

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

find 方法只适用于 id 所以最好使用 where 子句

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