Laravel - получить связь без привязки модели маршрута (без параметра) - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть таблицы отношений, где у одного ученика может быть много предметов. На домашней странице (/) я хочу отобразить данные из отношения без каких-либо параметров маршрута.

Модель студента

class Student extends Model
{
  protected $fillable = ['name', 'class', 'subjects'];
  public function all_marks()
  {
    return $this->hasMany(Marks::class, 'student_id');
  }
}

Маркирует модель

class Marks extends Model
{

  protected $fillable = ['name', 'student_id', 'subjects', 'marks'];
  public function marks()
  {
    return $this->belongsTo(Student::class, 'student_id');
  }
}

Маршрут

Route::get('/', 'Controller@home')->name('home_page');

Контроллер

 public function home()
  {
    $students = Student::orderBy('created_at', 'asc')->get();
    $minimum_marks = Student::with(['marks'])->where(['student_id'=>$students->id])->min('marks');
    return view ('home', compact('students', 'minimum_marks'));  
}

View

@foreach($studens as $student)
 Name: {{ $student->name}}
 Min. marks: {{ $minimum_marks }}
@endforeach

Здесь я получил

Свойство [id] не существует в этом экземпляре коллекции.

Я знаю, мне нужен маршрут как

Route::get('/{$id}', 'Controller@home')->name('home_page'); и измените функцию на public function home($id).

Но я хочу показать их на domain.com домашней странице, а не на domain.com/1

Я слышал о явной маршрутизации, но мало что знаю.

1 Ответ

0 голосов
/ 27 апреля 2018

Вы пытаетесь получить собственность id из коллекции здесь

->where(['student_id'=>$students->id])

Это свойство существует в одном экземпляре модели, и вы пытаетесь вызвать его для коллекции моделей, поэтому оно не существует.

...