在Yii中的活动记录的模型文件中添加新属性

时间:2012-12-28 13:09:51

标签: model yii

我是Yii框架的新手并且有一个问题。

我有一个名为'node'的表,其中包含以下字段:

  • ID
  • 姓名
  • PARENT_ID

parent_id也包含此表中存在的节点的父节点的id。

我使用Gii界面创建了模型,控制器和视图文件。在视图文件中显示父ID的id但我想显示父名而不是其id。

我想我可能需要在此表的模型类中添加公共属性,因此我可以通过视图文件中的> parent_name访问它。

我该怎么办?我应该更改哪些文件?

2 个答案:

答案 0 :(得分:1)

您应该拥有parent表的父级和关系,如:

'parent' => array(self::BELONGS_TO, 'Parent', 'parent_id)

'parent' => array(self::BELONGS_TO, 'Node', 'parent_id'),

如果它与同一张表有关系。然后你就可以像这样访问父名:

echo CHtml::value($node, 'parent.name'); 

答案 1 :(得分:1)

您应该与父节点有关系。

所以在你的Node :: relations函数中,你应该有类似的东西:

'parent' => array(self::BELONGS_TO, 'Node', 'parent_id'),

要从您的孩子那里获得这个值,您可以这样做(假设您的子节点变量名为$ childNode):

echo $childNode->parent->name;

如果你真的想做...

$childNode->parent_name;

...出于某种原因,您可以在Node模型中创建一个属性,如下所示:

public function getParent_name()
{
    if ($this->parent == null)
        return '';

    return $this->parent->name;
}

现在你可以打电话给...

$childNode->parent_name;

OR

$childName->getParent_name();

获取父节点的名称。