如何在yii中链接数据

时间:2012-06-10 13:34:49

标签: yii

我刚开始使用yii,但我不是php框架的新手。但是现在我遇到了这个问题:

我有两个模型/数据库:

系: http://s7.directupload.net/images/120610/alemicys.png

员工: http://s1.directupload.net/images/120610/hxerdm8t.png

我只想在此Employee视图中显示Department的实际名称。因此,我想要“司法部”而不是“部门”一栏中的1。

这就是我的数据库的样子: http:// s1.directupload.net/images/120610/7wupindz.png

提前致谢! 约翰

1 个答案:

答案 0 :(得分:2)

在员工网格视图的columns属性中添加:

// this is in place of just 'departmentId',
array( 
    'name'=>'departmentId', // name of the foreign key attribute
    'value'=>'$data->department->name', // access the 'name' attribute of the related record through relation named 'department', the current record is represented by '$data'
    'type'=>'raw' // data is of raw type
),

阅读CDataColumn以了解如何修改上述数组。

注意:由于您只要求显示,上面的代码才有效,如果您希望此列的过滤器有效,则必须

  1. 修改员工模型的搜索功能(或在您进行搜索的任何地方)将输入字符串映射到departmentId或
  2. 写一些javascript,将相关部门的id发送给搜索,而不是字符串。
  3. 现在,过滤器只能使用departmentId(即整数)而不是名称( string )。

    您也可以这样做而不是上面的代码:

    //again in place of departmentId
    'department.name' // using the 'department' relation, accessing its 'name'
    

    但是要获得过滤器将很难(你将不得不再次使用一个数组),并且列标题也将成为Department模型的名称的 attributeLabel 属性。可以使用以下格式更改标头:'name:type:header',以便执行以下操作:'department.name:Department'

    我所包含的文档链接中提供了大部分详细信息。