【问题标题】:How to get Name base on foreign key in Yii 1.6 admin view?如何在 Yii 1.6 管理视图中根据外键获取名称?
【发布时间】:2016-02-15 06:36:41
【问题描述】:

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

有人告诉我如何获得它?

【问题讨论】:

  • 在帖子中添加一些代码

标签: php mysql yii


【解决方案1】:

如果您需要具有外因的一对一关系

将“公司”模型中的关系定义为:

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是模型在实际网格中的距离。)

【讨论】:

  • 请解释一下$someSupplier->company->field_y?据我了解,公司是关系,field_y 是表的列名.......什么是 $someSupplier ?
  • $someSupplier 是您的供应商模型.. 公司(或公司)是您在关系中分配的名称,field_y 是文件名 con 公司模型.. 如果是一对一关系,则元素供应商属于(相关)公司..希望有用..
  • 我在“供应商”模型中定义为: public function Relations() { // 注意:您可能需要为下面自动生成的关系调整关系名称和相关 // 类名称。 return array('company' => array(self::BELONGS_TO, 'Company', 'CompanyID'), ); }
  • 我没有在公司模型上定义..我在供应商视图上获得了公司名称...这里是从公司表中获取公司名称的代码,它正在工作.array('name' =>' CompanyID', 'value' => '$data->company->getCompanyName()', ), 我使用了小部件 zii.widgets.grid.CGridView 问题是我不知道 $data 是什么以及它是如何提供公司名称吗?
  • 不要在评论中添加代码,而是更新您的问题,在底部添加代码并正确格式化..(我无法轻松阅读评论中的代码)
【解决方案2】:

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

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

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

那你就可以了

$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;

【讨论】:

  • 我得到了第一个答案的解决方案。你也是对的..但我使用的是 zii.widgets.grid.CGridView 我在 zii.widgets.grid.CGridView 中显示公司名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 2015-07-04
  • 2016-03-06
相关资源
最近更新 更多