理解關係時有問題。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查詢。我附上了參考資料,詳細解釋了它們之間的不同之處。 –