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

php artisan route::list给了我一个错误:试图获取非对象的属性,php,laravel,Php,Laravel,我打字的时候 php artisan route:list 我明白了 Trying to get property of non-object 我打字的时候 php artisan route:list -v 我明白了 这是相关代码 public function getDefaultSettings() { $user = Auth::user(); $categorySetting = $user->settings; // <- line 31 ..

我打字的时候

php artisan route:list
我明白了

 Trying to get property of non-object
我打字的时候

php artisan route:list -v
我明白了

这是相关代码

public function getDefaultSettings()
{
    $user = Auth::user();
    $categorySetting = $user->settings;   // <- line 31
...
}
知道怎么回事吗?

Auth::user()只在有用户登录时返回用户模型,因此当您在浏览器上添加时,将返回您的用户

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

您需要弄清楚的是route:list调用getDefaultSettings()的原因。我猜您正在routes.php文件中执行一些调用该函数的操作

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

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

接得好!我会试试看,也许会奏效!TxDone,tx,谢谢你的帮助!但我什么都没做。。。。我只是在控制器的构造函数中调用它:(很高兴它有帮助!看看你的堆栈跟踪和Laravel的源代码,似乎route:list调用控制器的构造函数来确定它使用了什么中间件。这就解释了你的问题。
    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
}
public function getDefaultSettings()
{
    if (Auth::check()) {
        $user = Auth::user();
        $categorySetting = $user->settings;
    ...
    }
}