如何在Yii 1.6管理视图中获取基于外键的名称?

时间:2016-02-15 06:36:41

标签: php mysql yii

我有两个表公司和供应商。公司ID是供应商表中的外键。假设我在创建供应商时在公司表中添加了一个公司,然后我也选择了公司名称。当我选择公司时,如“ Webdesignbestinclass“然后CompanyID将保存在Suppliers表中。 当我管理供应商的视图时,我也有CompanyID。实际上,我想要根据CompanyID获取公司供应商管理视图的名称?

有些人告诉我如何才能得到它?

2 个答案:

答案 0 :(得分:1)

如果您需要具有foreigen的One-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', ), 

($ data是实际网格行中模型的平均值。)

答案 1 :(得分:0)

选项1 (如果您更频繁地访问父/子记录,则会更好)

您绝对可以使用关系活动记录,请先检查Yii documentation for relational active record

如果在创建外键后使用gii创建模型,那么您应该已经自动为您创建了relations()。

然后你可以做

$supplierId = 'your supplier id';

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

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

如果您的供应商型号已经传递到您的视图,那么您可以

$model->company->name;

选项2 (更快)

$companyId = Your company ID ;

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

$companyName = $company->name;

如果您的供应商型号已经传递到您的视图,那么您可以

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

$companyName = $company->name;