2016-02-15 23 views
1

我有兩張表Companies和Suppliers.Company ID是供應商表中的外鍵。假設我在創建供應商時在公司表中添加了一個公司,然後我也選擇了公司名稱。當我選擇像「Webdesignbestinclass 「那麼CompanyID將保存在Suppliers表中。 當我管理供應商的觀點,然後我也有CompanyID。其實我想獲得公司的名稱在供應商管理視圖對CompanyID?如何在Yii 1.6管理視圖中獲取外鍵的名稱?

有人告訴我如何得到它?

+0

添加一些代碼也在後 –

回答

1

如果您需要在 '公司' 的模式已經foreigen

定義關係的一To_One關係爲:

public function relations() 
{ 
    'supplier' => array(self::HAS_ONE, 'Supplier', 'company_id'), 
} 

在 '供應商' 模式爲:

public function relations() 
{ 
    'company' => array(self::BELONGS_TO, 'Companies', 'supplier_id'), 
} 

我應該能夠訪問的字段爲:

$someCompany->supplier->field_x 
and 
$someSupplier->company->field_y 

你可以找到在這個文檔http://www.yiiframework.com/wiki/181/relations-belongs_to-versus-has_one/

使用在您的供應商關係模型函數定義的公司關係取得公司模型中場「名稱」的一些解釋,你應該使用

array('name' => 'CompanyID', 'value' => '$data->company->name',), 

($數據在電網的實際行模型的istance。)

+0

請解釋$ someSupplier-> company-> field_y?至於我的理解公司是關係,field_y是表的列名....... $ someSupplier是什麼? –

+0

$ someSupplier適合您的供應商型號..公司(或公司)是您在關係中指定的名稱,field_y是一個fileld con公司模型。如果是一對一關係元素供應商屬於(與之相關)公司..希望是有用的.. – scaisEdge

+0

我已經在doc中添加了一個鏈接回答.. – scaisEdge

0

選項1(更好,如果你訪問父/子記錄更多)

您肯定可以使用關係活躍記錄,首先檢查Yii documentation for relational active record

如果您在創建外鍵後使用gii創建模型,那麼您應該已經爲您自動創建了關係()。

然後,你可以做

$supplierId = 'your supplier id'; 

$supplier = Supplier::model()->findByPk($supplierId); 

$companyName = $supplier->company->name; 

如果您的供應商模式已經傳遞到你的觀點,那麼你可以做

$model->company->name; 

1選項(快)

$companyId = Your company ID ; 

$company = Company::model()->findByPk($companyId); 

$companyName = $company->name; 

如果您供應商模型已經傳遞給你的觀點,那麼你可以做

$company = Company::model()->findByPk($model->company_id); 

$companyName = $company->name; 
+0

我得到了第一個答案的解決方案。你也是對的。但我使用zii.widgets.grid.CGridView我在zii.widgets.grid.CGridView中顯示公司的名稱。 –