我有一个名为 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:从 2
中选择 user_wallet
,其中 user_wallet
。{{ 1}} = user_id 限制 1)
但是,正如您在图片中看到的,有两个钱包的 id
为 2。
所以这里出了什么问题?我该如何解决这个问题?
答案 0 :(得分:1)
find 方法只对 id 有效,所以最好使用 where 子句
$user_wallet = UserWallet::where('user_id', $us_id);
答案 1 :(得分:0)
我觉得你用 find()
错了,这个方法只接受一个参数,就是你要查找的主键的值。因为您在数据透视表中并且没有 id,
您必须在第一次出现时使用 firstWhere('user_id', $us_id)
,否则您必须为数据透视表重写 find() 方法。
但请注意,一个用户可能有多个钱包,因此最好询问他们使用哪个钱包。