Вы должны сначала понять связи с моделью 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);
}
Оставьте столбцы с именами, указанными в диаграмме отношений, и назовите таблицы как годы, депутаты, кандидаты, затем определить Год имеет большое отделение, а также Имеет много кандидатов:
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();