2017-04-13 21 views
0

我有模型說,供應商 - 機器,供應商,供應商 - 部分和零件。 enter image description here當存在多個關係時,使用via()或viaTable()顯示屬性-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?在這種情況下,我認爲供應商和供應商之間的關係就像是兩個聯結表。我該如何解決這個問題?

回答

1

您可以通過供應商關係通過$model->supplier->parts訪問零件,假設您的SupplierMachine型號與供應商的關係爲supplier。您仍然必須考慮多個部分,但:

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

是的,這將顯示與該supplier_id沒有任何空格或逗號有關的多個記錄。如何更改它以在多個記錄之間包含逗號或空格? – Rachna

+0

順便提一下感謝您的回答 – Rachna

+0

如果'implode'中的第一個參數是一個字符串,它將被用作記錄之間的粘合劑。在上面的答案中,我使用了逗號。 – topher

相關問題