首页 > 解决方案 > Laravel 5.8:SQLSTATE [42S22]:找不到列:1054 未知列

问题描述

我有一个user_wallet这样的表:

在此处输入图像描述

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

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:2user_wallet哪里选择user_walletid= user_id 限制 1)

但是,正如您在图片中看到的那样,有两个带有 2 的钱包user_id

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

标签: phplaraveleloquentlaravel-5.8

解决方案


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

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


推荐阅读