Laravel 5.8: $bal->balance 为空
Laravel 5.8: $bal->balance is getting null
我想从名为 user_wallet
的枢轴 table 中获取 balance
列的值,如下所示:
所以我在控制器上写了这个:
$bal = Wallet::with("users")->whereHas('users', function ($query) use ($wallet_id, $user_id) {
$query->where('wallet_id', $wallet_id);
$query->where('user_id', $user_id);
})->first();
但是当我执行 dd($bal->balance)
时,我得到 null
!
那是为什么呢?如何根据 user_id
和 wallet_id
正确获取 balance
值?
这里也是User
模型和Wallet
模型之间的关系:
User.php
public function wallets()
{
return $this->belongsToMany(Wallet::class, 'user_wallet', 'user_id', 'wallet_id')->withPivot('balance');
}
Wallet.php
public function users()
{
return $this->belongsToMany(User::class, 'user_wallet', 'wallet_id', 'user_id');
}
非常感谢你们的任何想法或建议...
您的查询应该如下所示。因为您建立的关系是与用户 table 而不是 user_wallet.
$bal = Wallet::with("users")
->whereHas('users', function ($query) use ($user_id) {
$query->where('id',$user_id);
})
->where('id', $wallet_id)
->first();
您也可以做一个简单的查询:
$bal = DB::table('user_wallet')
->where('wallet_id', $wallet_id)
->where('user_id', $user_id)
->first();
if (!empty($bal)) {
$balance = $bal->balance;
}
因为它是多对多的关系,为了得到枢轴 table 你循环如下:
@foreach($bal as $key => $value)
{{$value->pivot->balance}}
@endforeach
或者如果它是单个项目,那么您可以这样做:
$user = $bal->users()->first();
$user->pivot->balance;
或
$user = $bal->users->first();
$user->pivot->balance;
如果还需要的话直接按的建议。
我想从名为 user_wallet
的枢轴 table 中获取 balance
列的值,如下所示:
所以我在控制器上写了这个:
$bal = Wallet::with("users")->whereHas('users', function ($query) use ($wallet_id, $user_id) {
$query->where('wallet_id', $wallet_id);
$query->where('user_id', $user_id);
})->first();
但是当我执行 dd($bal->balance)
时,我得到 null
!
那是为什么呢?如何根据 user_id
和 wallet_id
正确获取 balance
值?
这里也是User
模型和Wallet
模型之间的关系:
User.php
public function wallets()
{
return $this->belongsToMany(Wallet::class, 'user_wallet', 'user_id', 'wallet_id')->withPivot('balance');
}
Wallet.php
public function users()
{
return $this->belongsToMany(User::class, 'user_wallet', 'wallet_id', 'user_id');
}
非常感谢你们的任何想法或建议...
您的查询应该如下所示。因为您建立的关系是与用户 table 而不是 user_wallet.
$bal = Wallet::with("users")
->whereHas('users', function ($query) use ($user_id) {
$query->where('id',$user_id);
})
->where('id', $wallet_id)
->first();
您也可以做一个简单的查询:
$bal = DB::table('user_wallet')
->where('wallet_id', $wallet_id)
->where('user_id', $user_id)
->first();
if (!empty($bal)) {
$balance = $bal->balance;
}
因为它是多对多的关系,为了得到枢轴 table 你循环如下:
@foreach($bal as $key => $value)
{{$value->pivot->balance}}
@endforeach
或者如果它是单个项目,那么您可以这样做:
$user = $bal->users()->first();
$user->pivot->balance;
或
$user = $bal->users->first();
$user->pivot->balance;
如果还需要的话直接按