php - 如何在 Yii 中获取相关值?

标签 php yii

架构:

CITY
ID (int)
Name (string)
Status (int)

CITY_STATUS
ID (int)
Name (string)
  1. 当我显示一个城市(在 View View 中)时,我想显示相关的 CITY_STATUS.Name 值,而不是 CITY.Status 值

  2. 当我添加或更新城市时,我想在下拉列表中显示所有 CITY_STATUS.Names 的下拉列表

我如何在 Yii 中执行此操作?

最佳答案

猜猜我会自己回答。

问题一

如果您先在数据库中设置外键,关系会更容易。为此,您需要将 MySQL(不是 SQLite)与 InnoDB 引擎(不是 MyISAM)一起使用,并且相关字段需要一个索引。然后,Gii 会自动为你设置关系函数。否则,您必须在相关模型的 relations() 函数中手动执行此操作。

在 View 中使用相关值:

在protected/views/[model name]/view.php中,在CDetailView属性数组中,更改

'Status'

array('label'=>'Status', 'value'=>$model->RelationName->Name)

其中 RelationName 是关系的名称

要在索引 View 中使用相关值,请更改 protected/views/[model name]/_view.php(注意下划线),例如在这种情况下您将更改

$data->Status

$data->RelationName->Name

要在管理 View 中使用相关值,请在 CGridView 小部件调用中,在列数组中替换 say

'Status'

array('name'=>'Status', 'header'=>'Status', 'value'=>'$data->RelationName->Name')

(注意变量 $data 的使用,而不是 $model 或 $dataProvider)。仍在尝试弄清楚如何排序和过滤...

问题2

要使用下拉菜单,在 protected/views/[model name]/_form.php 中:

改变

<?php echo $form->textField($model,'Status'); ?>

<?php echo $form->dropDownList($model,'Status', CHtml::listData(Status::model()->findAll(), 'ID', 'Name')); ?>

酋长,君子君子。

关于php - 如何在 Yii 中获取相关值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4261563/

相关文章:

php -\w 取决于编码?

php - PHP 中使用 Doctrine 进行跨数据库连接

PHP/SQL 不会从父级获取所有子级

php - 获取当前 URL/URI 而不使用某些 $_GET 变量

yii - Yii2 中的 findAllByPk 模拟

php - 在 PHP 中经过一定时间后的 session_destroy()

javascript - 调用特定的导航选项卡

php - 如何设置 Controller 操作的页面标题?

php - 如何在 yii 框架中使用登录表单进行身份验证

php - 使用 YII 搜索连接表