我有一张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人。
那么这里出了什么问题?我如何解决这个问题?
2条答案
按热度按时间jv4diomz1#
find方法只对id有效,所以最好使用where子句
vhmi4jdf2#
我想你正在使用
find()
错误,此方法只接受一个参数,它是要查找的主键的值。因为您在透视表中,并且没有id,所以必须使用firstWhere('user_id', $us_id)
对于第一次出现,您必须重写透视表的find()方法。但请注意,一个用户可能有多个钱包,因此最好询问他们使用哪个钱包。