Laravel 5.6 Красноречивые отношения, уровень 2

Как получить все данные на этой картинке.

Как получить все данные на этой картинке. Я использую Laravel 5.6 Eloquent Model.

0

Решение

Вы должны сначала понять связи с моделью Laravel.

я пытался сопоставить отношения. дайте мне знать, если я ошибаюсь.

здесь я думаю:

  • кандидат имеет один год
  • один год есть несколько кандидатов
  • один год принадлежит одному отделу (эта часть сбивает с толку)

Модель отдела

class Department extends Model
{
public function years(){
return $this->hasMany(Year::class,'dept_id');
}
}

Модель года:

class Year extends Model
{
public function department(){
return $this->belongsTo(Department::class,'dept_id');
}

public function candidates(){
return $this->hasMany(Candidate::class,'year_id', 'year_id');
}
}

Модель кандидата:

class Candidate extends Model
{
public function year(){
return $this->belongsTo(Year::class,'year_id','year_id');
}
}

контроллер:

 public function index()
{
$data = Year::with(['department', 'candidate'])->get();
dd($data);
}
0

Другие решения

Оставьте столбцы с именами, указанными в диаграмме отношений, и назовите таблицы как годы, депутаты, кандидаты, затем определить Год имеет большое отделение, а также Имеет много кандидатов:

class Year extends Model
{
public function depts()
{
return $this->hasMany('App\Dept');
}

public function candidates()
{
return $this->hasMany('App\Candidate');
}
}

Тогда вы можете взять их всех с метод, в контроллере:

$years = App\Year::with(['depts', 'candidates'])->get();

ОБНОВИТЬ

Кандидат также может быть основной моделью, применяя Вложенная нетерпеливая загрузка.

сначала убедитесь, что вы определили кандидата и отдела:

Модель кандидата

class Candidate extends Model
{
public function Year()
{
return $this->belongsTo('App\Year');
}
}

Модель отдела

class Dept extends Model
{
public function Year()
{
return $this->belongsTo('App\Year');
}
}

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

$candidates = App\Candidate::with('year.depts')->get();
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector