2017-05-25 1 views
0

Je suis nouveau à laravel, et ai mis en place quelques modèles et vues, etc. Quoi qu'il en soit, ce que j'essaie de faire est, j'ai un modèle d'utilisateur, et un modèle d'équipes. Le champ 'id' est une clé étrangère pour l'identifiant team_id des utilisateurs. L'utilisateur peut rejoindre n'importe quelle équipe et l'équipe qu'il rejoint, son identifiant sera stocké dans 'team_id' de l'utilisateur. Ce que je tente de faire, en utilisant le champ team_id pour obtenir des données du modèle des équipes, comme le nom de l'équipe et l'afficher sur ma vue lame.Laravel 5.4 impossible d'accéder aux données via la clé étrangère dans la lame

Voici mon code pour le modèle des utilisateurs:

 protected $fillable = ['name', 

     'email', 
     'password', 
     'date_of_birth', 
     'team_id', /*references id in teams model*/ 
     'matches_played', 
     'goals_scored', 
     'preffered_position', 
     'phone_number', 
     'role', 
     'ban_status', 
     'team_captain' 
    ]; 





    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 


    public function Teams(){ 
     return $this->belongsTo('App\Teams', 'team_id'); 
    } 


} 

Ceci est mon code pour le modèle des équipes:

`protected $primaryKey = 'id'; 
protected $fillable = ['team_name', 'matches_played', 
'matches_lost', 'goals_scored', 'goals_conceded', 
'captain_name']; 

public function User(){ 
    return $this->hasMany('App\User','id'); 
} 

`

public function showMembers(){ 
    $users = User::with(array('Teams'))->get(); 
    return view('admin.members')->with('users', $users); 
    } 

`

` et ce Voilà comment je suis en train de le montrer dans la lame: {{$ user-> team_id-> TEAM_NAME}}

Mais au lieu de l'afficher, je continue à obtenir:

Trying to get property of non-object (View: D:\Code\PHP\Code\PlayOn\resources\views\admin\members.blade.php) 

Toute aide serait apprécié!

Répondre

0

Il y a un certain nombre de choses que vous faites mal ici.

En premier lieu, à la charge avide d'une relation, dans ce cas, la relation entre les équipes, c'est la façon de le faire:

$users = User::with('Teams')->get(); 

Enfin, pour boucler dans la collection, vous devez faire quelque chose comme ceci:

@foreach($users as $user) 
    {{ $user->Teams->team_name }} 
@endforeach 
+0

Cela a fonctionné! Merci beaucoup! –