当我的用户尝试登录到他们的仪表板时,出现尝试获取非对象错误的属性

Posted

技术标签:

【中文标题】当我的用户尝试登录到他们的仪表板时,出现尝试获取非对象错误的属性【英文标题】:Trying to get property of non-object error appears when my users try logging into thieir dashboard 【发布时间】:2020-04-19 14:21:26 【问题描述】:
         <div class="container-fluid">
          <h2 class="no-margin-bottom">Dashboard</h2>
        </div>
      </header>
    <?php
       AccusedCaseView($user_id);
       $TheBalance = DB::table('bank')->where('userid', $user_id)->first();
       if ($TheBalance->balance > "2000")
       
         recomitmentWithdraw($user_id); 

这是给我该错误的代码..每当我的用户尝试登录他们的仪表板时,它就会弹出

【问题讨论】:

所以$TheBalance-&gt;balance &gt; "2000" 部分导致了错误? 是的..就是这个部分 实际上,这条线只是一个更大问题的症状。根本问题是您没有从 DB::table 返回对象。所以要解决这个问题,你需要找出为什么它没有返回一个对象。解决此问题后,您需要更正生产中的错误报告,以便获得错误日志并且客户不会看到编程错误... 我该怎么做.. 调试任何东西的方式都是一样的——你可以从不工作的地方开始,然后回到工作的地方,或者从工作的地方开始,然后工作到不工作的地方。这意味着您需要深入研究 db 对象并找出不正确的地方。 【参考方案1】:

好像有些用户没有银行记录所以在这种情况下,你需要添加这个

if ($TheBalance->exists && $TheBalance->balance > "2000")`

【讨论】:

如果$TheBalance 不是对象,$TheBalance-&gt;exists 会是什么? 如果对象不存在则返回false,所以不扣分 如果$TheBalance 不是一个对象,那么$TheBalance-&gt;exists 会导致同样的错误,因为它不是一个对象,如果这是一个对象,这个exists 属性会是什么? 只是为了确认错误出现在这一行:If ($TheBalance->balance > "2000") ?? 你可以试试 if($TheBalance- !== null && $TheBalance->balance > "2000")

以上是关于当我的用户尝试登录到他们的仪表板时,出现尝试获取非对象错误的属性的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 尝试创建帐户,登录并发送激活电子邮件正在抛出“尝试获取非对象的属性”

将用户转发到 Wordpress 中的自定义仪表板

如何将支柱传递到反应路由器路由?

要获取无效的凭证,甚至凭证都以Django登录格式在数据库中注册?

解析服务器仪表板登录

除非管理员,否则无法访问 WordPress 仪表板