我是CakePHP的新开发者,我对这个案子感到不满:
现在我有一个表用户模型用户,我想检查id = 4的记录是否存在:如果记录存在,则返回它,如果没有返回消息错误,我认为有2种方法:
解决方案1:
$this->Model->id = 4;
if ($this->Model->exists()) {
return $this->Model->read();
} else {
return "ERROR";
}
解决方案2:
$data = $this->Model->find('first', array(
'conditions' => array('Model.id' => 4)
));
if (!empty($data)) {
return $data;
} else {
return "ERROR";
}
我不知道什么是更好或更优化(我认为解决方案1蛋糕会做2个查询,是吗?),请给我答案以获得最佳解决方案。请为我的英语不好。
答案 0 :(得分:1)
不需要两个查询。
class FooModel extends Model {
public function view($id) {
$result = $this->find('first', [
'conditions' => [
$this->alias . '.' . $this->primaryKey => $id
]
]);
if (empty($result)) {
throw new \NotFoundException('Foo record not found');
}
}
return $result;
}
然后只需在控制器操作中调用该方法:
public function view($id) {
$this->set('foo', $this->FooModel->view($id));
}
如果你想做除显示未找到错误之外的其他事情,请捕获异常。
答案 1 :(得分:0)
当然。对于1,将有two
个查询 - 第一个将是count
,第二个将fetch
记录。
我更喜欢第二种方法。运行query
,然后检查empty
数据。