一个用户奇怪地出现两个链接 - Laravel 模型
Two links appears for one user weirdly - Laravel models
我的用户和钱包模型之间存在多对多关系。
钱包型号
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
它工作正常,但问题是,它在一个用户的 table 中显示两个 link。但是,它应该显示一个。
如果我这样做:
@forelse($user->wallets as $wallet)
{{ count(array($user)) }}
@empty
<td colspan="5" class="text-center">
No wallet exist
</td>
@endforelse
结果将是 1。
问题来自 link 的 'userId' => $user->id
。因为如果我删除它,只会出现1 link,这是正确的。但是,我确实需要 userId
并且不知道如何将其传递到路由名称中。
那么这里出了什么问题?我需要每个用户一个link,我不知道为什么它打印两个。
@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
returns collection?
也许您需要检查是否有任何用户拥有多个钱包,或者如果您只想显示一个钱包,您可以使用 $user->wallets[0]
来显示第一个钱包模型,因为它是 collection
我的用户和钱包模型之间存在多对多关系。
钱包型号
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
它工作正常,但问题是,它在一个用户的 table 中显示两个 link。但是,它应该显示一个。
如果我这样做:
@forelse($user->wallets as $wallet)
{{ count(array($user)) }}
@empty
<td colspan="5" class="text-center">
No wallet exist
</td>
@endforelse
结果将是 1。
问题来自 link 的 'userId' => $user->id
。因为如果我删除它,只会出现1 link,这是正确的。但是,我确实需要 userId
并且不知道如何将其传递到路由名称中。
那么这里出了什么问题?我需要每个用户一个link,我不知道为什么它打印两个。
@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
returns collection?
也许您需要检查是否有任何用户拥有多个钱包,或者如果您只想显示一个钱包,您可以使用 $user->wallets[0]
来显示第一个钱包模型,因为它是 collection