【问题标题】:Yii - Foreign key - Access DataYii - 外键 - 访问数据
【发布时间】:2011-07-08 04:57:03
【问题描述】:

我刚刚进入 Yii,发现它有点令人困惑(至少与 Cake 或 CI 相比)。以下是我想知道的几件事:

1) 如果我有一个“添加站”表单(使用站模型)。在表格中,将有一个“公司”下拉列表(来自公司模型)。 Station 属于公司(Station 的外键是 company_id)。

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

2) 我还有以下数据库表:

station
- id
- location_id

location
- id
- state_id
- city_id

state
- id
- state

city
- id
- city

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

【问题讨论】:

  • 是的,这应该是两个独立的问题。

标签: php mysql yii


【解决方案1】:

1) 看看我对这个问题的回答,了解关于downdown的提示(关键是CHtml::listData):

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

2) location 只是statecity 之间的关系表吗?然后只需在您的城市和州模型中执行 MANY_MANY relation()AdvancedAR 扩展使管理 MANY_MANY 关系变得更轻松。

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

【讨论】:

  • 不知道第一个选项,会检查一下。就第二个选项而言,我觉得我错过了一些东西。甚至要从我最初的“车站”表格中访问州和城市列表,我该怎么做?它们相距 2 步:例如,Station 需要访问 Location,然后需要访问 State 模型中的 State 列表。从表格中做到这一点的最佳方法是什么?
  • 我只会将 state_id 和 city_id 存储在 station 表中,而不是额外的 location 表。如果您这样做,查询同一位置的所有站点的列表仍然很容易,并且我认为它会简化您的整个“位置”表问题。不过,我不知道您要完成什么,所以我可能已经走了。
  • 也许你是对的。老实说,我只是通过移植我构建的旧应用程序来学习 Yii。我只是想尽可能地规范化,我认为这是一个很好的方法来尝试看看在 Yii 中这种事情是多么容易
  • 另外,澄清一下,在 Cake 中,您可以在控制器操作中放置一些东西,例如 $states = States::findAll() 之类的东西,然后在视图中访问它以用于落下。我想我想做这样的事情
  • 喜欢这个? echo CHtml::dropdownlist('choose_state','',CHtml::listData(State::model()->findall(),'id','state'));
猜你喜欢
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多