CAKEPHP:使用主键[NULL]

时间:2018-03-03 23:54:36

标签: php mysql cakephp-3.0

提前致谢

请尽快帮助

我正在尝试实现一种情况,当用户登录时,他被重定向到用户视图,如

本地主机/ cakephp的/用户/视图/ 1

其中1是用户ID 在我看来这里的方法就是我所拥有的

public function view($id = null)
{

   $user = $this->Users->get($id, [
       'contain' => []
   ]);

   $this->set('user', $user);
}

如果我取出方法参数中的空值 我会得到这样的东西

本地主机/ cakephp的/用户/视图

而我需要这样的东西

本地主机/ cakephp的/用户/ 1

当null值在view方法参数中时,我得到的错误是

使用主键[NULL]

在表“users”中找不到记录

所以我填充那里我应该添加到view方法参数中以便能够实现我想要的东西

请帮助我如何实现这个目标

感谢期待

2 个答案:

答案 0 :(得分:0)

在连接到DB之前添加额外的检查,

public function view($id = null)
{
   if($id){
       $user = $this->Users->get($id, [
           'contain' => []
       ]);

       $this->set('user', $user);
   } else {
       $this->Flash->error('Invalid Request / Invalid User');
   }
}

如果您想要实现其他目标,请告诉我

答案 1 :(得分:-2)

您也可以为无效请求抛出异常。这样您就不需要在视图中为$ user添加任何检查。

function view($id = null)
{

     if(!$id)
     {
        //Throw exception here
     }

       $user = $this->Users->get($id, [
           'contain' => []
       ]);

       if(!$user)
       {
           //Throw another exception here 
       }

       $this->set('user', $user);

}