1

我在用户模型和钱包模型之间存在多对多关系:

Wallet.php

public function users()
    {
        return $this->belongsToMany(User::class);
    }

并且User.php

public function wallets()
    {
        return $this->belongsToMany(Wallet::class);
    }

我想像这样获取单个用户的钱包列表:

@forelse($user->wallets as $wallet)
<tr>
   <td>{{ $wallet->id }}</td>
</tr>
@empty
<td colspan="5" class="text-center">No wallet exist</td>
@endforelse

但是我以某种方式收到此错误:

SQLSTATE [42S22]:找不到列:1054 '字段列表'中的未知列'user_wallet.user_usr_id'(SQL:选择. * wallets,. user_walletas user_usr_idpivot_user_usr_id.as from inner join on . = . where . = 373)user_walletwallet_idpivot_wallet_idwalletsuser_walletwalletsiduser_walletwallet_iduser_walletuser_usr_id

但是,此用户 ID 中的钱包已经存在于user_wallet表中:

在此处输入图像描述

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

我真的很感激你们关于这个的任何想法或建议......

提前致谢。

4

1 回答 1

0

尝试在关系中提及数据透视表

public function users()
{
        return $this->belongsToMany(User::class,'user_wallet','user_id','wallet_id');
}

public function wallets()
{
        return $this->belongsToMany(Wallet::class,'user_wallet','wallet_id','user_id');
}

参考:https ://laravel.com/docs/8.x/eloquent-relationships#many-to-many

于 2021-07-14T05:24:37.333 回答