以下代码仅返回错误:表“users”中找不到记录
if($this->Users->get($uid)->isEmpty()) {
//do something
}
因为Table为空,所以如果表为空,我想自定义它,并在浏览器中调用新页面
答案 0 :(得分:9)
Table::get()
将立即评估查询并返回实体,或者如果具有给定主键的记录不存在则抛出异常,即它不会返回查询,您不能在结果上调用isEmpty()
。
如果您使用Table::get()
,则可以抓住RecordNotFoundException
:
try {
$user = $this->Users->get($uid);
// ...
} catch (\Cake\Datasource\Exception\RecordNotFoundException $exeption) {
// record doesn't exist
}
如果您想使用isEmpty()
,则需要使用常规查询:
$query = $this->Users->findById($uid);
if ($query->isEmpty()) {
// record doesn't exist
}
如果您实际上不需要结果,可以使用Table::exists()
:
$exists = $this->Users->exists(['id' => $uid]);
if ($exists !== true) {
// record doesn't exist
}
或COUNT
查询:
$count = $this->Users->findById($uid)->count();
if ($count !== 1) {
// record doesn't exist
}
另见