理解关系时有问题。Yii简单的关系理解
我有这些表:
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 |
+------------+-------+-------+-------+-------+
我有一个问题的理解,如果常数适用于relationed模型或当前模型,例如Module HAS_ONE Status
或者应该是status BELONGS_TO a Module
。
注意BELONGS_TO
没有工作,所以也许我回答自己,但我想就如何更好地理解关系中的一些建议,因为在YII指南的例子,一个user HAS_ONE Profile
,所以是不是一样的user HAS_ONE status
?
http://www.yiiframework.com/doc/guide/1.1/en/database.arr#declaring-relationship
非常感谢。
我不明白的事实,STATUS有一个模块,我的意思是一个模块必须有一个状态。但由于外键是在模块表中,我认为这使它成为一个儿童,而不是父母,对吧? – JorgeeFG
是的,就是这样。目前,我从你的关系中看到,Module是小孩,但有父母的关系。两种关系是不同的,它会完全不同地产生2个SQL查询。我附上了参考资料,详细解释了它们之间的不同之处。 –