【发布时间】:2013-04-30 20:11:04
【问题描述】:
我有以下情况。我有一个模型引用名为questions 的数据库表。问题表包含一个名为parent_id 的关键引用,因此问题可以有父级。这个父级是同一个表中的一个问题记录。这是因为有些问题实际上是最终用户需要一起查看的一堆问题。
我尝试在我的数据库中对这种行为进行建模,如下所示:
public $hasMany = array(
'AttemptedQuestions' => array( 'classname' => 'AttemptedQuestions' ),
'Questions' => array('className'=>'Questions', 'foreignKey'=>'parent_id')
);
编辑:所以奇怪的是,在问题控制器中,我可以很好地引用我的数据,如下所示:
$test_question = $this->Question->find('all', array('conditions' => array('id' => 25)));
这正是我想要的。我返回了一个包含问题及其子项的数据数组。对于具有父问题parent_id 的问题,以$test_question['Questions'] 访问问题$test_question['Children']。我不明白的是,如果我在另一个控制器(如Tests)中引用此模型,它不会返回子数组。只返回问题部分。从模型返回的数据如何取决于您所在的控制器?这种行为似乎很奇怪,我也想知道如何从数据库中获取孩子。感谢您的宝贵时间。
【问题讨论】:
-
@teresko 这一定是您第三次编辑我的问题。你在这里编辑了什么?
-
我删除了“mvc”标签并添加了“cakephp-appmodel”标签。首先是因为 CakePHP 没有实现 MVC 或任何其他受 MVC 启发的模式。它实际上只是模仿(有点糟糕)PHP 的 Rails 设置。而你的问题其实是关于CakePHP框架中的
AppModel结构,也就是Active Record的实现。 -
@IamJohnGalt:你可以通过点击最后一次编辑的时间来查看修订历史(i.imgur.com/Hbk1P3I.png)
-
@tereško 这听起来像是一种主观意见。一个基于个人对不喜欢 CakePHP 的偏见。我认为 CakePHP 是 MVC 的有效实现。是什么让你不相信?
-
这与信仰无关。请研究 MVC 模式,然后比较 CakePHP 卖给你的是“mvc 框架”。如果您不知道从哪里开始,请从查找控制器的职责开始(尝试 wikipedia)。
标签: php mysql cakephp-2.0 cakephp-model