首页 > 解决方案 > 一个用户奇怪地出现了两个链接 - Laravel 模型

问题描述

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

钱包型号

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

用户模型

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

然后在我的 Blade 文件中,我尝试了以下操作。

@forelse($user->wallets as $wallet)
    <tr>
        <td>
            {{ $wallet->name }}
        </td>
        <td>
            {{ $wallet->pivot->balance }}
        </td>
    <td>
        <a href="{{ route('user.WalletTransaction', ['walletId'=>$wallet->id,'userId'=>$user->id]) }}" class="fa fa-exchange text-dark mt-1" />
    </td>
</tr>
@empty
    <td colspan="5" class="text-center">No wallet exist</td>
@endforelse

它工作正常,但问题是,它在表中为一个用户显示了两个链接。但是,它应该显示一个。

在此处输入图像描述

如果我这样做:

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

结果将是1

问题来自'userId' => $user->id链接。因为如果我删除它,只会出现1 个链接,这是正确的。但是,我确实需要userId并且不知道如何将其传递到路由名称中。

那么这里出了什么问题?我需要为每个用户提供一个链接,但我不知道为什么它会打印其中两个。

标签: phplaravellaravel-5.8

解决方案


@forelse($user->wallets as $wallet)
    <tr>
        <td>
            {{ $wallet->name }}
        </td>
        <td>
            {{ $wallet->pivot->balance }}
        </td>
    <td>
        <a href="{{ route('user.WalletTransaction', ['walletId'=>$wallet->id,'userId'=>$user->id]) }}" class="fa fa-exchange text-dark mt-1" />
    </td>
</tr>
@empty
    <td colspan="5" class="text-center">No wallet exist</td>
@endforelse`

$user->wallets返回与每个用户关联的所有钱包的集合吗?

也许您需要检查是否有任何用户拥有多个钱包,或者如果您只想显示一个,您可以使用用户$user->wallets[0]显示自收藏以来的第一个钱包模型


推荐阅读