将表格数据连接到Yii2 gridview

时间:2016-05-04 12:11:42

标签: yii yii2

我有3个表,我基本上需要在单个gridview中显示。

  • property
  • sale(FK property_id)
  • sale_staff(FK sale_id,staff_id)
  • 员工

现在,工作人员可以是李斯特,卖家或两者兼而有之,每个销售可以有多个Lister或卖家。 因此,表格sale_staff包含列' staff_type'可能的枚举值lister',卖家。

因此gridview必须有类似

的显示
property street | sale price | sale date | lister | seller

并且列表/卖家字段应该能够显示简单的首字母逗号分隔,如MJ, AB。此initial字段来自员工表,如上所述,该表通过ID链接到sale_staff。

我之前没有见过这种情况,所以我只是不确定如何将sale_type合并到搜索中,以便只显示列为listerseller的人员那个地方。

此外,如果我尝试这样的事情,只是为了看看有什么东西被撤回:

'attribute' => 'saleStaff.staff_id.initials'

'attribute' => 'saleStaff.staff'

我在gridview中得到(not set)

我的关系设置如下: 售:

public function getProperty()
{
    return $this->hasOne(Property::className(), ['id' => 'property_id']);
}

public function getSaleStaff()
{
    return $this->hasMany(SaleStaff::className(), ['sale_id' => 'id']);
}

Sale_Staff:

public function getStaff()
{
    return $this->hasOne(Staff::className(), ['id' => 'staff_id']);
}

public function getSale()
{
    return $this->hasOne(Sale::className(), ['id' => 'sale_id']);
}

如何将联接表sale_staff与销售表匹配?结构正常还是DB不正确?我这样做是为了灵活 - 任何数量的员工都可以是利斯特,卖家或两者兼而有之,例如:

property street | sale price | sale date | lister | seller
Parkers Road    |  400,000   | 22/06/2016| MJ     | MJ, AB

自然,关键问题是如何在单个gridview列中表示多个(未知数量)值。

0 个答案:

没有答案