检查CakePHP3.5中是否存在记录

时间:2018-02-11 11:26:02

标签: cakephp cakephp-3.x

以下代码仅返回错误:表“users”中找不到记录

if($this->Users->get($uid)->isEmpty()) {
            //do something
        }

因为Table为空,所以如果表为空,我想自定义它,并在浏览器中调用新页面

1 个答案:

答案 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
}

另见