dsvf46980 2016-07-14 07:52
浏览 52
已采纳

CakePHP 3:即使未从数据库中提取数据,也会返回true

I'm working in CakePHP 3.2. There is a table user_addresses from which I'm trying to fetch all records of an user

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';
    }
}

To check it, I added myFun to controller's beforeFilter

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

and this prints World instead of Hello since there is no data retrieved from database because if user is not logged in then $user_id must be empty.

  • 写回答

1条回答 默认 最新

  • doutang3760 2016-07-14 12:15
    关注

    First of all check if $user_id is available then and then call find() method.

    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';
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?