Laravel 5.6雄辩的关系2级

时间:2018-11-08 06:20:46

标签: php laravel

How to get all of the data on this picture.

如何获取此图片上的所有数据。我正在使用Laravel 5.6口才模型。

2 个答案:

答案 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);
    }