php - 一个用户奇怪地出现了两个链接 - 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
并且不知道如何将其传递到路由名称中。
那么这里出了什么问题?我需要为每个用户提供一个链接,但我不知道为什么它会打印其中两个。
解决方案
@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]
显示自收藏以来的第一个钱包模型
推荐阅读
- javascript - TypeError: is not a constructor with Node and Express JS
- python - 如何使用pdfminer从python中的pdf中提取字段
- reactjs - 我不知道为什么我会收到“未捕获的类型错误:无法读取 null 的属性 'map'”
- python - 在 python 中,如何使 main args 全局化
- apache-spark - avsc 中的别名值不显示与 avro 文件相同的值
- python - 使用需要更多参数的 _init_ 嵌入自定义 RNN 单元(3 vs 1)
- c# - 使用 .NET Core 2.2 通过 HttpContext 访问 AD 用户
- javascript - 在循环中多次覆盖元素的样式?
- ios - 错误:方法不会覆盖其超类中的任何方法
- owasp - 如何在 OWASP Zap (GUI) 自动攻击中指定 URL 参数