Je sais que ces questions sont déjà posées mais je suis coincé ... J'ai 2 tables (clubs et membres):
Dans ma table clubs j'ai 3 champs id_club, name_club, type_sport_club
Tout fonctionne sur ma table Clubs p >
Cependant je suis coincé dans mon tableau Membres , je ne comprends pas ...
Mon problème est que je n'obtiens que le numéro de mon fk et pas le nom de club...
Pour information, j'ai 3 champs id_membre, name_membre, fk_club
Alors ... Dans ma base de données j'ai ceci p >
@foreach($membres as $membre)
<tr>
<td> {{$membre->name_membre}}</td>
<td> {{$membre->fk_club}}</td>
<td>
<form method="POST" action="{{ route('membres.destroy', $membre) }} ">
<a class="btn btn-sm btn-warning" href="{{route('membres.edit',$membre->id_membre)}}">Editer</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-danger">Deleter</button>
</form>
</td>
</tr>
@endforeach
Puis sur le modèle j'ai ceci
public function index()
{
$membres = Membre::oldest()->paginate(5);
return view('admin.membres.index', compact('membres'))
->with('i', (request()->input('page', 1)-1)*5);
}
Après pour le contrôleur j'ai ceci
class Membre extends Model
{
//
protected $fillable = ['name_membre', 'fk_club'];
}
3 Réponses :
Tout d'abord, votre clé étrangère dans la migration des membres fait référence à id_client dans la table clients , vous voudrez probablement qu'elle fasse référence à id_club dans la table clubs (sauf si votre table s'appelle réellement clients).
Ensuite, pour obtenir le nom du club auquel appartient un membre, vous devrez ajouter une fonction appelée club à votre modèle Membre , qui renvoie quelque chose comme < code> $ this-> appartient à ('App \ Club'); . Si vous ne l'avez pas fait, vous devez également ajouter une fonction membres à votre modèle Club , qui renvoie quelque chose comme $ this-> hasMany ('App \ Membre '); .
Dans votre vue, vous pouvez accéder au nom du club avec $ membre-> club-> name_club .
Voici un lien vers la documentation Laravel sur les relations Eloquent, peut-être qui aide à clarifier les choses se passent.
Vous devez définir votre relation,
<td> {{$membre->club->name_club}}</td>
Vous pouvez maintenant l'utiliser comme ci-dessous,
class Membre extends Model
{
//
protected $fillable = ['name_membre', 'fk_club'];
public function club()
{
return $this->belongsTo('App\Club', 'fk_club');
}
}
Sur votre modèle Membre Ajoutez ceci
class Club extends Model{
public function membre(){
return $this->hasMany('App\Membre', 'fk_club','id_club');
}
}
Vous pouvez obtenir ces données sur votre fichier de vue en
XXX
Et votre modèle de club ajoute ceci
<td> {{$membre->club->name_club}}</td>
}
C'est ainsi que fonctionnent fondamentalement les relations SQL. La clé étrangère fournit une spécification sur quelle table vous devez joindre et sur quel champ afin d'obtenir toutes les données liées à une ligne donnée. Si vous aviez le nom du club sur chaque membre de ce club, il y aurait trop de duplication et d'autres choses merveilleuses telles que la mise à jour et la suppression des anomalies. @Alex a suggéré d'utiliser des relations éloquentes et je pense que c'est certainement quelque chose que vous devez examiner, mais vous devrez peut-être d'abord examiner les bases des bases de données relationnelles.