CakePHP 3: возвращает true, даже если данные не извлекаются из базы данных

Я работаю в CakePHP 3.2. Это стол user_addresses из которого я пытаюсь получить все записи пользователя

public function myFun()
{
    $this->loadModel('UserAddresses');
    $user_id = $this->Auth->user('id');
    $userAddresses = $this->UserAddresses->find('all', [
       'conditions' => [
           'user_id' => $user_id
       ]
    ]);
    if (empty($userAddresses)) {
       echo 'Hello';               // for testing only
    } else {
       echo 'World';
    }
}

Чтобы проверить это, я добавил myFun к контроллеру beforeFilter

$this->Auth->allow(['myFun']);

и это печатает Мир вместо Привет, так как нет данных, извлеченных из базы данных, потому что, если пользователь не вошел в систему, то $user_id должен быть пустым.

1 ответ

Решение

Прежде всего, проверьте, если $user_id доступен тогда и тогда звоните find() метод.

public function myFun()
{
    $this->loadModel('UserAddresses');
    $user_id = $this->Auth->user('id');
    if(empty($user_id)){
        echo "Not able to access this method";
        die();
    }
    $userAddresses = $this->UserAddresses->find('all', [
       'conditions' => [
           'user_id' => $user_id
       ]
    ]);
    if (empty($userAddresses)) {
       echo 'Hello';               // for testing only
    } else {
       echo 'World';
    }
}
Другие вопросы по тегам