laravel5.8:sqlstate[42s22]:未找到列:1054未知列

gev0vcfq  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(418)

我有一张table叫 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:select) 2 从…起 user_wallet 哪里 user_wallet . id =用户id限制(1)
然而,正如你在图中所看到的,有两个钱包带有 user_id 共2人。
那么这里出了什么问题?我如何解决这个问题?

jv4diomz

jv4diomz1#

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

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

vhmi4jdf2#

我想你正在使用 find() 错误,此方法只接受一个参数,它是要查找的主键的值。因为您在透视表中,并且没有id,所以必须使用 firstWhere('user_id', $us_id) 对于第一次出现,您必须重写透视表的find()方法。
但请注意,一个用户可能有多个钱包,因此最好询问他们使用哪个钱包。

相关问题