Bonsoir,
J'aimerai arriver à faire parler 3 tables correctements avec Laravel 5.5, mais je n'y arrive pas...
J'ai 3 tables, assez simples, user, wallet et wallet_type
La constitution est comme ceci :
user
wallet
wallet_type
Dans mon template, j'aimerai récupérer le wallet et le wallet_type selon un user spécifique
Model User.php
public function wallets()
{
return $this->hasMany('App\Wallet');
}
Model Wallet.php
public function user()
{
return $this->belongsTo('App\User');
}
public function walletType()
{
return $this->hasOne('App\WalletType');
}
Model WalletType.php
public function wallet()
{
return $this->belongsTo('App\Wallet');
}
J'aimerai donc récupérer dans mon blade un truc du style
@foreach(wallets as wallet)
{{ $wallet->walletType->name }} ou {{ $wallet->walletType()->name }}
@endforeach
Les wallets se récupèrent sans problèmes, mais c'est le walletType->name que je n'arrive pas à afficher...
Je fais sûrement quelque chose de mal, mais je n'arrive pas à mettre la main dessus.
Merci de votre aide !
hello,
Je pense qu'il y a deux soucis :
Model Wallet.php
public function walletType()
{
return $this->belongsTo('App\WalletType');
}
Model WalletType.php
public function walletType()
{
return $this->hasOne('App\Wallet');
}
En gros c'est le même pricnipe qu'un hasMany/belongsTo
public function walletType()
{
return $this->belongsTo('App\WalletType', 'wallet_type');
}
bonne chance
Hello,
dans ton model WattetType essaie de retourner dans ta fonction wallet :
return $this->belongsTo(Wallet::class)->with('user');
Et fais un dd($wallets) dans ton controller pour vérifier si tu récupères bien l'info.
Hello, merci de ta réponse !
J'ai fait ce que tu m'as dit, et malheureusement pas de changement à l'horizon..
Dans mon HomeController.php
$user = User::find(Auth::id());
dd($user->wallets);
Le résultat
La fonction WalletType
La fonction Wallet
La fonction User
Merci de ton aide ! :)
Super, merci @Amilti !
Je pense que c'était la convention d'Eloquent que je maitrisais mal, parce que j'avais cette approche au début, mais ça ne fonctionnait pas, alors j'ai essayé d'autre chose.
Je ferais plus attention la prochaine fois pour la manipulation !
Merci encore !