【问题标题】:CAKEPHP: Record not found in table "users" with primary key [NULL]CAKEPHP:使用主键 [NULL] 在表“用户”中找不到记录
【发布时间】:2018-03-03 23:54:36
【问题描述】:

提前致谢

请尽快帮忙

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

localhost/cakephp/users/view/1

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

public function view($id = null)
{

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

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

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

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

而我需要这样的东西

localhost/cakephp/users/1

当空值在视图方法参数中时我得到的错误是

在主键 [NULL] 的“用户”表中找不到记录

所以我填写了一些我应该添加到视图方法参数以能够实现我想要的东西

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

感谢期待

【问题讨论】:

  • 我怀疑$id 默认为NULL,而您正在查询数据库以获取该值。将var_dump($id)添加到函数顶部以检查值。
  • @JimWright 谢谢...它确实默认为空。我该如何解决这个谢谢
  • @JimWright 感谢您的及时和坦率的回应,我已经按照建议阅读了有关路由的 cakephpcook 书,但仍然没有得到它,您能帮我提供一些示例代码以进行校准,谢谢。
  • @JimWright 感谢您的及时和坦率的回应,我已经按照建议阅读了有关路由的 cakephpcook 书,但仍然没有得到它,您能帮我提供一些示例代码以进行校准,谢谢。

标签: php mysql cakephp-3.0


【解决方案1】:

在连接到数据库之前添加一个额外的检查,

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

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

【讨论】:

  • 这是我在包含建议的代码时得到的通知 (8): Trying to get property of non-object [APP/Template\Users\view.ctp, line 20] 它仍然最终在尝试向我显示用户详细信息时回显 else 块
  • 因为 $user 现在未定义,您应该在视图中添加一个检查,以检查 $user 是否为空...
  • 非常感谢,请问我该如何实施这种检查,但没有得到它,谢谢
  • bilz 非常感谢,请问我该如何实施这种检查,但没有得到它,谢谢
  • 我不知道您的视图布局,仍然在您的视图中使用“$user->SOME_Property”,在此之前添加一个 if 条件 if($user) 然后进入 else SHOW给他们留言。
【解决方案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);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多