2015-12-26 2 views
4

Когда я типа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 
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 

Вот соответствующий код

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

Сообщение об ошибке кажется мне что-то неправильно около $ пользователю Дело в том, когда я д.д. $ categorySetting или $ пользователю, это дает мне правильные объекты ...

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 
} 

Любая идея, что не так ???

ответ

2

Auth :: user() возвращает только модель User при входе пользователя в систему, поэтому, когда вы заходите в браузер, ваш пользователь возвращается.

Однако, когда вы вызываете маршрут: список из cli, $ user равно null, следовательно, «Попытка получить свойство не-объекта».

Что вам нужно выяснить, почему route: list вызывает getDefaultSettings(). Я предполагаю, что вы делаете что-то на своем файле route.php, который вызывает эту функцию.

Один быстрый способ решить эту проблему, чтобы проверить, является ли там пользователь вошел прежде, чем делать что-нибудь еще с моделью пользователя, используя метод проверки:

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

хороший улов! Я попробую, и, вероятно, сработает! Tx –

+0

Готово, tx за вашу помощь! –

+0

, но я ничего не делал .... Я просто назову его в конструкторе контроллера :( –

Смежные вопросы