我的控制器需要通过循环它接收到的请求数据并创建相应的记录来创建/保存一个或多个记录。您可能会想:为什么不直接使用saveAll()
并一次保存它们呢?简单的回答是,某些记录需要引用在同一循环中创建的其他记录的ID(这些ID还不存在)。
我的循环成功创建了第一条记录,当我使用find()
时,循环的后续迭代无法"看到"新创建的记录。如果我回显返回的数组,结果在那里,但是新创建的数组丢失了。为什么?是CakePHP的魔术使新记录不可用,由于某种缓存?
下面是我的代码,不包括最新的记录:
$newest_parent_question = $this->Question->find('first', array(
'conditions'=>array('Question.perm_id'=>$parent_question['Question']['perm_id']),
'order' => array('Question.created DESC')
)
);
但是,新记录返回如下:
$newest_parent_question = $this->Question->find('all');
你的查询有问题。
$parent_question['Question']['perm_id']
可能是错误的。CakePHP不会做任何事情使您的记录无法找到。
只要调试你的变量,确保你正在用正确的id构建正确的查询,然后你就可以开始了。
(在没有看到实际创建id的方式的情况下,无法提供其他帮助)