2011-03-03 46 views
0

我刚进入Yii,发现它有点混乱(至少与Cake或CI相比)。这里有几件事我想知道:Yii - 外键 - 访问数据

1)如果我有一个'添加站'的形式(使用站模型)。在表格中,将会有一个“公司”(从公司模型)的下拉列表。站属于公司(站有一个company_id的外键)。

我该如何去生成下拉列表?应该将用于提取数据的Php代码存储在模型中,还是应该只是表单中的一行?

2)我也有以下的数据库表:如上

station 
- id 
- location_id 

location 
- id 
- state_id 
- city_id 

state 
- id 
- state 

city 
- id 
- city 

对于现在,在相同的形式,我想有个“位置”字段,然后2个城市下拉菜单和州。无论用户选择什么,都将作为外键对存储在位置表中。我会怎么做呢?

+0

是的,这可能应该是两个单独的问题。 – thaddeusmt 2011-03-03 17:34:27

回答

1

1)我的回答看这个问题有关downdown提示(关键是了CHtml ::的ListData):

Does CDbcommand method queryAll() in yii return indexed entries only?

2)是locationstatecity之间只是一个关系表?然后在你的城市和州模型中做一个MANY_MANY relation()AdvancedAR扩展使得管理MANY_MANY关联变得更容易一些。

否则,只需为每个表格设置一个模型,然后在它们之间添加相应的relations()。然后在表单发布操作中,创建一个新的位置并设置state_idcity_id,然后保存()。

+0

不知道第一个选项,会检查出来。就第二种选择而言,我觉得我错过了一些东西。要从我最初的“电台”形式访问州和城市名单,我该怎么做?他们有2步之遥:如在,站将需要访问位置,然后需要访问状态模型的国家列表。什么是从表单中做到这一点的最佳方式? – djt 2011-03-04 02:11:00

+0

我只是在station表中存储state_id和city_id,而不是拥有额外的位置表。如果你这样做,在同一地点查询所有电台列表仍然很容易,它会简化你的整个“位置”表问题。我不知道你想完成什么,所以我可能会离开。 – thaddeusmt 2011-03-04 02:51:12

+0

也许你是对的。老实说,我只是通过移植一个我建造的旧应用来学习Yii。我只是想尽量规范化,我认为这将是一个很好的方法来试图看看Yii中这种事情是多么容易。 – djt 2011-03-04 03:48:08