我在理解关系时遇到问题。
我有这些表:
Modules
- name (pk)
- status_id (fk references status(id))
Status
- id (pk)
- name
所以在模块中我声明了关系:
public function relations()
{
return array(
'status'=>array( self::HAS_ONE, 'Status', 'status_id' ),
);
}
但是这不起作用,每个状态都是 NULL。
Yii 执行的查询:
SELECT `t`.`name` AS `t0_c0`, `t`.`status_id` AS `t0_c1`, `t`.`session_limit` AS `t0_c2`, `status`.`id` AS `t1_c0`, `status`.`name` AS `t1_c1` FROM `ss_module` `t` LEFT OUTER JOIN `ss_module_status` `status` ON (`status`.`id`=`t`.`name`)
+------------+-------+-------+-------+-------+
| t0_c0 | t0_c1 | t0_c2 | t1_c0 | t1_c1 |
+------------+-------+-------+-------+-------+
| digidoc | 2 | 0 | NULL | NULL |
| docusearch | 1 | 2 | NULL | NULL |
| printbox | 2 | 0 | NULL | NULL |
+------------+-------+-------+-------+-------+
我无法理解常量是否适用于相关模型或当前模型,例如Module HAS_ONE Status
,如果应该是status BELONGS_TO a Module
。
请注意,这BELONGS_TO
确实有效,所以也许我是在回答自己,但我想就如何更好地理解关系提出一些建议,因为在 YII 指南示例中,auser HAS_ONE Profile
和 不一样user HAS_ONE status
吗?
http://www.yiiframework.com/doc/guide/1.1/en/database.arr#declaring-relationship
非常感谢。