如何使用cakephp中的find语句编写此查询
$this->Form->query("Select id from forms order by id DESC LIMIT 1")
答案 0 :(得分:5)
这应该这样做:
$this->Form->find('all', array(
'fields' => array('Form.id'),
'order' => 'Form.id DESC',
'limit' => 1
));
答案 1 :(得分:0)
查看文档:{{3}}
答案 2 :(得分:0)
我同意这里的第一个回复, 我要提两件事 我假设你有一个名为Form的模型,现在Cakephp有自己的FormHelper,有时可能存在名称冲突,当我在项目中创建了FilesController时出现了这个错误, 你也会得到一个格式为
的数组
$result['Form] => array(
[id] => 1
[name] => whatever)
等等,您可以轻松地使用它来获取您想要的任何数据。
答案 3 :(得分:0)
虽然应该找到('第一'),但真正的问题可能更简单。我只能假设进行此类查询的唯一原因是获取最后插入的ID。在与保存相同的“运行”中,您可以使用相同的名称在模型属性中获取插入的ID:
$this->ModelName->create($this->data);
if ($this->ModelName->save()) {
$this->Session->setFlash('Saved it!');
$id_of_new_row = $this->ModelName->id;
$this->redirect(array('action' => 'view',$id_of_new_row));
}
答案 4 :(得分:0)
如paolo所述,但在查询中添加“递归”:
$this->Form->find('all', array(
'fields' => array('Form.id'), // just return the id, thank you
'order' => 'Form.id DESC', // sort the query result by id DESC
'limit' => 1, // gimme the top id
'recursive' => -1, // don't scan associated models in the query
));
但我也会用
$this->Form->find('first', array(
'fields' => array('Form.id'),
'order' => array('Form.id DESC'),
'recursive' => -1,
)
);
哪个不短,但更能表达你想要的东西。
我建议你小心,因为已经有一个表格助手,可能会发生混乱。另一方面,您通常在视图中使用$ form变量,而这是控制器代码。