加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php artisan route :: list给我一个错误:试图获取非对象的属性

发布时间:2020-12-13 16:59:00 所属栏目:PHP教程 来源:网络整理
导读:当我输入 php artisan route:list 我明白了 Trying to get property of non-object 当我输入 php artisan route:list -v 我明白了 Exception trace: () at /home/vagrant/Code/app/CategorySettings.php:31 IlluminateFoundationBootstrapHandleException
当我输入

php artisan route:list

我明白了

Trying to get property of non-object

当我输入

php artisan route:list -v

我明白了

Exception trace:
 () at /home/vagrant/Code/app/CategorySettings.php:31
 IlluminateFoundationBootstrapHandleExceptions->handleError() at /home/vagrant/Code/app/CategorySettings.php:31
 AppCategorySettings->getDefaultSettings() at /home/vagrant/Code/app/Http/Controllers/CategoryController.php:27
 AppHttpControllersCategoryController->__construct() at n/a:n/a
 ReflectionClass->newInstanceArgs() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/Container.php:776
 IlluminateContainerContainer->build() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/Container.php:627
 IlluminateContainerContainer->make() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:674
 IlluminateFoundationApplication->make() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:170
 IlluminateFoundationConsoleRouteListCommand->getControllerMiddleware() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:151
 IlluminateFoundationConsoleRouteListCommand->getMiddleware() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:119
 IlluminateFoundationConsoleRouteListCommand->getRouteInformation() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:89
 IlluminateFoundationConsoleRouteListCommand->getRoutes() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:76
 IlluminateFoundationConsoleRouteListCommand->fire() at n/a:n/a
 call_user_func_array() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/Container.php:503
 IlluminateContainerContainer->call() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php:150
 IlluminateConsoleCommand->execute() at /home/vagrant/Code/vendor/symfony/console/Command/Command.php:256
 SymfonyComponentConsoleCommandCommand->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php:136
 IlluminateConsoleCommand->run() at /home/vagrant/Code/vendor/symfony/console/Application.php:838
 SymfonyComponentConsoleApplication->doRunCommand() at /home/vagrant/Code/vendor/symfony/console/Application.php:189
 SymfonyComponentConsoleApplication->doRun() at /home/vagrant/Code/vendor/symfony/console/Application.php:120
 SymfonyComponentConsoleApplication->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:107
 IlluminateFoundationConsoleKernel->handle() at /home/vagrant/Code/artisan:35

这是相关的代码

public function getDefaultSettings()
{
    $user = Auth::user();
    $categorySetting = $user->settings;   // <- line 31
...
}

错误消息似乎告诉我$user的错误
事情是当我dd $categorySetting或$user时,它给了我正确的对象……

User {#418 ▼
  #table: "users"
  #fillable: array:16 [?]
  #hidden: array:2 [?]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:20 [?]
  #original: array:20 [?]
  #relations: array:1 [?]
  #visible: []
  #appends: []
  #guarded: array:1 [?]
  #dates: []
  #dateFormat: null
  #casts: []
  #touches: []
  #observables: []
  #with: []
  #morphClass: null
  +exists: true
  +wasRecentlyCreated: false
}

知道什么是错的???

解决方法

Auth :: user()仅在用户登录时返回User模型,因此当您在浏览器上dd时,将返回您的用户.

但是,当您从cli调用route:list时,$user为null,因此“尝试获取非对象的属性”.

您需要弄清楚的是路由:list调用getDefaultSettings()的原因.我的猜测是你在routes.php文件上做了一些调用该函数的东西.

解决问题的一种快速方法是使用check方法检查是否有用户在使用用户模型执行任何其他操作之前登录:

public function getDefaultSettings()
{
    if (Auth::check()) {
        $user = Auth::user();
        $categorySetting = $user->settings;
    ...
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读