繁体   English   中英

存在多个关系时,使用via()或viaTable()显示属性-YII2

[英]Display attribute using via() or viaTable() when there is multiple relations- YII2

对于模型,我有供应商机器,供应商,零件供应商和零件。 在此处输入图片说明

这些表就是这样相互关联的。

在“供应商”模型中,该关系定义如下,以检索“零件表”的part_name,并将“供应商对零件”保留为连接表。

public function getSupplierToParts()
{
    return $this->hasMany(SupplierToPart::className(), ['supplier_id' => 'id']);
}


public function getParts()
{
    return $this->hasMany(Part::className(), ['id' => 'part_id'])->viaTable('supplier_to_part', ['supplier_id' => 'id']);
}

在详细视图中,我使用爆破显示part_name

[
    'attribute'=>'Nature of business',
    'value' => implode(\yii\helpers\ArrayHelper::map($model->parts, 'id', 'part_name')),

    ],

我的问题是如何在供应商机器模型而不是供应商模型中显示part_name? 在这种情况下,我认为供应商和零件供应商变得像两个联结表。 我该如何解决?

您可以通过通过供应商关系访问部分$model->supplier->parts ,假设你SupplierMachine模型的有关供应商的supplier 但是,您仍然必须考虑多个部分:

'value' => implode(",", 
    \yii\helpers\ArrayHelper::map($model->supplier->parts, 'id', 'part_name')
),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM