答案 0 :(得分:0)
保留以您在关系图中所写内容命名的列,并将表命名为年,部门,候选人,然后定义年份hasMany Dept 和< strong>有很多候选人:
class Year extends Model
{
public function depts()
{
return $this->hasMany('App\Dept');
}
public function candidates()
{
return $this->hasMany('App\Candidate');
}
}
然后您可以在控制器中通过 with 方法将它们全部保存:
$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();
答案 1 :(得分:0)
您应该首先了解laravel模型中的relations。
我试图映射这种关系。让我知道我是否错了。
我认为:
部门模型
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);
}