2017-02-28 52 views
0

我正在使用yii2框架並嘗試連接多個表。在GridView中連接多個表

我已經成功地加入了3個表格,但我不清楚如何將其擴展到4個表格。

I joined three tables as follows >>> 

//In Tasks Model 
public function getLocation() 
{ 
    return $this->hasOne(Locations::className(), 
    ['id' => 'location_id']); 
} 

//in current Model 
public function getLocation() 
{ 
    return $this->hasOne(Tasks::className(),['id'=>'task_id']) 
     ->with(['location']); 
} 


//then in grid view 
.... 
'columns' => [ 
    [ 
     .... 
     [ 
      class' => 'kartik\grid\DataColumn', 
      'label' => 'Name', 
      'value' => 'tasks.location.name', 
     ], 
     .... 

因此,這工作正常,但是我現在想加入一個額外的表相關的位置。該連接將是locations.task_group_id = task_group.id。全部加入如下

****我成功了這個上面****

  1. responses.task_id = tasks..id

  2. tasks.location_id = locations.id

  3. locations->名(名稱爲在位置表中的字段)

我該如何做?

  1. responses.task_id = tasks..id

  2. tasks.location_id = locations.id

  3. locations.task_group.id = task_group.id

  4. task_group->名(名稱是task_group表中的字段)

回答

0

完成它,赫雷斯如何。

我這樣做是在視圖

.... 
'columns' => [ 
.... 
[ 
    'class' => 'kartik\grid\DataColumn', 
    'value'=> 'tasks.location.taskowner.name', 
    ..... 
], 
..... 

和它的任務模式工作

******我的腳步********

public function getLocation() 
{ 
    return $this->hasOne(Locations::className(), 
    ['id' => 'location_id']); 
} 

在地點模式

public function getTasks() 
{ 
    return $this->hasMany(Tasks::className(), 
     ['contractor_id' => 'id']); 
} 

public function getTaskOwner() 
{ 
    return $this->hasOne(TaskOwner::className(), 
     ['id' => 'task_owner_id']); 
} 

在此模型中

public function getTasks() 
{ 
    return $this->hasOne(Tasks::className(), ['id' => 'task_id']); 
} 

然後在此視圖網格視圖插件

.... 
'columns' => [ 
.... 
[ 
    'class' => 'kartik\grid\DataColumn', 
    'value'=> 'tasks.location.taskowner.name', 
    ..... 
], 
.....