Check if record exists in CakePHP3.5

后端 未结 1 1597
北海茫月
北海茫月 2021-01-12 09:38

The Following Code returns only a error :Record not found in table \"users\"

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


        
1条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-12 10:17

    Table::get() will immediately evaluate the query and return an entity, or throw an exception if the record with the given primary key doesn't exist, ie it doesn't return a query, you cannot call isEmpty() on the result.

    If you are using Table::get() you can catch the RecordNotFoundException:

    try {
        $user = $this->Users->get($uid);
        // ...
    } catch (\Cake\Datasource\Exception\RecordNotFoundException $exeption) {
        // record doesn't exist
    }
    

    If you wanted to use isEmpty(), you'd need to use a regular query:

    $query = $this->Users->findById($uid);
    if ($query->isEmpty()) {
        // record doesn't exist
    }
    

    If you don't actually need the result, you can use Table::exists():

    $exists = $this->Users->exists(['id' => $uid]);
    if ($exists !== true) {
        // record doesn't exist
    }
    

    or a COUNT query:

    $count = $this->Users->findById($uid)->count();
    if ($count !== 1) {
        // record doesn't exist
    }
    

    See also

    • Cookbook > Database Access & ORM > Retrieving Data & Results Sets > Getting a Single Entity by Primary Key
    • Cookbook > Database Access & ORM > Retrieving Data & Results Sets > Checking if a Query or ResultSet is Empty
    • API > \Cake\Datasource\RepositoryInterface::exists()
    • Cookbook > Database Access & ORM > Query Builder > Returning the Total Count of Records

    0 讨论(0)
提交回复
热议问题