我正在尝试找出CakePHP中我的$约会实体是否为空,但这不起作用:
$appointment = $this->Appointments->get($id);
if($appointment->isEmpty()) {
throw new NotFoundException("invalid appointment");
}
错误:
错误:调用未定义的方法 应用\模型\实体\预约::的isEmpty()
这样做的正确方法是什么? docs表示它适用于Query
或ResultSet
,但我需要提供上述代码。
答案 0 :(得分:4)
您似乎正在尝试Get a Single Entity by Primary Key。如果是这种情况,那么您不应该验证它是否已找到,如果不是,则不应该抛出您自己的例外情况。从我在文档中看到的内容,框架将自动为您做到这一点。
如果get操作没有找到任何结果,将引发Cake \ Datasource \ Exception \ RecordNotFoundException。您可以自己捕获此异常,也可以允许CakePHP将其转换为404错误。
答案 1 :(得分:0)
您需要手动处理异常。遵循这种方法:
/* Mention this on top of your page */
use Cake\Datasource\Exception\RecordNotFoundException;
use Cake\Network\Exception\NotFoundException;
public function test()
{
try {
$appointment = $this->Appointments->get($id);
} catch (RecordNotFoundException $e) {
$appointment = [];
}
if (!$appointment) {
$this->Flash->error(__("Invalid appointment"));
return $this->redirect($this->referer());
}
}