2016-09-15 5 views
1

Я пытаюсь создать некоторые отношения с моими таблицами (Player и Team), но я не могу отобразить имя моей команды с ассоциированным игроком.Laravel One To Many (Игроки и команда)

Руководство: В команде много игроков. Внешний ключ (TEA_ID) находится в таблице игроков.

Вот моя команда Model (Team.php)

class Team extends Model 
{ 
protected $table = 'teams'; 
protected $primaryKey ='TEA_ID'; 

public function players(){ 
    return $this->hasMany('App\Model\Player'); 
} 

} 

Вот часть моего шаблона (players.blade.php)

<?php 
     foreach($players as $player) { 
    ?> 
    <tr> 
     <td><?php echo $player->PLA_ID?></td> 
     <td><?php echo $player->PLA_Name?></td> 
     <td><?php echo $player->PLA_Surname?></td> 
     <td><?php echo $player->PLA_Pseudo?></td> 
     @if($player->team) 
      <td><?php echo $player->team->TEA_NAME?></td> 
     @endif 
     <td>|<span class="glyphicon glyphicon-pencil"></span>|</td> 
     <td>|<span class="glyphicon glyphicon-trash" data-toggle="modal" data-target="#modalDelete"></span>|</td> 
    </tr> 

Вот мой контроллер игрока (PlayerController.php)

public function show(){ // reçoit l'url http://monsite.fr/users avec le  verbe "get" et qui retourne le formulaire. 

    $players = player::with('team')->get(); 
    return view('players', ['players' => $players]); 

} 

Вот плеер Модель (Player.php)

class Player extends Model 
{ 
protected $table = 'players'; 
protected $primaryKey ='PLA_ID'; 


public function team(){ 
    return $this->belongsTo('App\Models\Team'); 
} 

} 

Таблица playes отображает ДАННЫЕ правильно, но имя не команды. Я знаю, что могу использовать метод belongsTo(), но не знаю, где моя ошибка. Спасибо за вашу помощь, я узнаю много =)

+0

где ваша модель игрока? – follio

+0

Извините, вот модель, но я специально работал над Team Model для отношений. –

+0

Вам действительно нужно установить отношения 'belongsTo()' в вашей модели проигрывателя. если вы хотите, чтобы работал '$ player-> team-> TEA_NAME'. – follio

ответ

0

Вы должны определить отношения с командой в модели игрока:

class Player extends Model 
{ 
    protected $table = 'players'; 
    protected $primaryKey ='PLA_ID'; 

    public function team() { 
     return $this->belongsTo('App\Model\Team'); 
    } 

} 

Тогда вы будете иметь возможность получить доступ к данным команды, таким образом, : (Предполагается, что $ игрока является экземпляром модели игрока)

$player->team->TEA_NAME 

Надеется, что это может помочь.

+0

@Follio сказал то же самое, но он не работает, но я читаю документы об One to May. –

+0

Вы должны сделать некоторые отладки. Я не понимаю, почему вы используете player :: с ('team') -> get(); Функция show() должна получить параметр с идентификатором Team, затем вы загружаете экземпляр Team, чтобы вы могли вернуть $ team-> игроков в представление. – xyzale