简体   繁体   English

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

[英]php artisan route::list gives me an error: Trying to get property of non-object

When I type 当我输入

php artisan route:list

I get 我明白了

 Trying to get property of non-object

When I type 当我输入

php artisan route:list -v

I get 我明白了

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

Here is the related code 这是相关的代码

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

Error message seems to tell me something wrong about $user Thing is when I dd $categorySetting or $user, it gives me the correct objects... 错误消息似乎告诉我有关$ 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
}

Any idea what's wrong??? 知道什么是错的???

Auth::user() only returns the User model when there's an user logged in, so when you dd on the browser, your user is returned. Auth :: user()仅在用户登录时返回User模型,因此当您在浏览器上dd时,将返回您的用户。

However, when you call route:list from the cli, $user is null, hence 'Trying to get property of non-object'. 但是,当您从cli调用route:list时,$ user为null,因此“尝试获取非对象的属性”。

What you need to figure out is why route:list calls getDefaultSettings(). 您需要弄清楚的是路由:list调用getDefaultSettings()的原因。 My guess would be that you're doing something on your routes.php file that calls that function. 我的猜测是你在routes.php文件上做了一些调用该函数的东西。

One quick way to solve the problem is to check whether there's an user logged in before doing anything else with the user model by using the check method: 解决问题的一种快速方法是使用check方法检查是否有用户在使用用户模型执行任何其他操作之前登录:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 试图在php artisan migrate命令上获取非对象的属性 - Trying to get property of non-object on php artisan migrate command 使用belongsTo()函数会给我错误“尝试获取非对象的属性” - using belongsTo() function gives me error “Trying to get property of non-object” 查询给出错误:试图获取非对象的属性 - Query gives error: Trying to get property of non-object Laravel路由不起作用错误是试图获取非对象的属性 - Laravel Route not working error is Trying to get property of non-object 我正在尝试运行下面的代码,但它给了我这个错误:尝试在第47行的c:\\ xampp \\ htdocs \\…\\ index.php中获取非对象的属性 - I am trying to run the code below but it gives me this error: Trying to get property of non-object in c:\xampp\htdocs\…\index.php on line 47 当我输入php artisan serve时,laravel试图获取非对象的属性 - laravel trying to get property of non-object when i type php artisan serve PHP和Smarty错误:试图获取非对象的属性 - PHP and Smarty Error: Trying to get property of non-object PHP 中的错误:“试图获取非对象的属性” - Error in PHP : "Trying to get property of non-object" PHP错误:注意:试图获取非对象的属性 - PHP Error: Notice: Trying to get property of non-object PHP试图获取函数中非对象错误的属性 - PHP Trying to get property of non-object error in function
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM