[英]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.