我正在使用yii2框架并尝试连接多个表。
我已经设法加入了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。完全加入如下
****我成功完成上述****
responses.task_id = tasks..id
tasks.location_id = locations.id
locations-> name(name是locations表中的字段)
我该怎么做?
responses.task_id = tasks..id
tasks.location_id = locations.id
locations.task_group.id = task_group.id
task_group-> name(name为task_group表中的字段)
答案 0 :(得分:0)
完成它,Heres如何。
我在视图中这样做了
....
'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',
.....
],
.....