2016-06-01 2 views
0

У меня есть две таблицы; Студенты и класс. Студенты содержат внешний ключ grade_id, ссылающийся на класс. Для просмотра студентов я использовал следующий код; Контроллер:Отображаемое имя вместо идентификатора. Laravel

public function viewStudent() 
    { 

     $students=Student::all(); 
     return $students('grade_id'); 
     $grade = Grade::find($id, ['id', 'grade_name']); 

     return view('students.view',compact('students')); 
    } 

Вид:

<tbody> 
      @foreach($students as $student) 
      <tr class="info"> 
       <td>{{$student->first_name}}</td> 
       <td>{{$student->middle_name}}</td> 
       <td>{{$student->last_name}}</td> 
       <td>{{$student->grade_id}}</td> 


      </tr> 

      @endforeach 
     </tbody> 

Модель:

class student extends Model 
{ 
    // 
    protected $fillable = ['first_name','middle_name','last_name','grade_id']; 
} 

Это показывает grade_id, как я назвал его. Но вместо этого мне нужно имя_события. Может кто-нибудь мне помочь?

ответ

2

Прежде всего, необходимо определить отношение к Grade в студенческой модели:

class student extends Model 
{ 
    public function grade() { 
    return $this->belongsTo(Grade::class); 
    } 
} 

Тогда вы должны быть в состоянии с нетерпением оценки нагрузки для студентов с именем класса студента

$students = Student::with('grade')->get(); 

и доступа с

$student->grade->name 
+0

Спасибо! Это сработало отлично! :) – Anon

1

В модели

class student extends Model 
{ 

protected $fillable = ['first_name', 'middle_name', 'last_name', 'grade_id']; 

    public function grade() 
    { 
     return $this->belongsTo('Grade'); 
    } 
} 

В контроллере

$students = Student::with('grade')->get(); 

В View

@foreach ($students as $student) 
    $studentGradeName = $student->grade->name; 
@endforeach 
Смежные вопросы