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_idwallet_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;

如果还需要的话直接按的建议。