Quiero obtener un valor de la columna de balance de una tabla dinámica llamada user_wallet que dice así:
Así que escribí esto en el Controlador:
$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(); Pero cuando hago dd($bal->balance) , ¡obtengo null !
Entonces, ¿por qué es eso? ¿Cómo puedo obtener el valor del balance en función de user_id y wallet_id correctamente?
Aquí también están las relaciones entre el modelo User y el modelo de 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'); }Realmente agradecería cualquier idea o sugerencia de ustedes...
Su consulta se supone que es como a continuación. Porque la relación que está haciendo es con la tabla de usuarios, no con user_wallet.
$bal = Wallet::with("users") ->whereHas('users', function ($query) use ($user_id) { $query->where('id',$user_id); }) ->where('id', $wallet_id) ->first();También puede hacer una consulta simple:
$bal = DB::table('user_wallet') ->where('wallet_id', $wallet_id) ->where('user_id', $user_id) ->first(); if (!empty($bal)) { $balance = $bal->balance; }Dado que es una relación de muchos a muchos, para obtener la tabla dinámica, haga un bucle como se muestra a continuación:
@foreach($bal as $key => $value) {{$value->pivot->balance}} @endforeacho si es un solo elemento, puede hacer lo siguiente:
$user = $bal->users()->first(); $user->pivot->balance;o
$user = $bal->users->first(); $user->pivot->balance;si todavía necesita directamente entonces, como lo sugiere @Dilip Hirapara answer .