无法声明类 App\User,因为该名称已在我的浏览器中使用

Posted

技术标签:

【中文标题】无法声明类 App\\User,因为该名称已在我的浏览器中使用【英文标题】:Cannot declare class App\User, because the name is already in use in my browser无法声明类 App\User,因为该名称已在我的浏览器中使用 【发布时间】:2019-03-20 14:27:28 【问题描述】:

当我运行程序时。我的模型用户有问题。路径 App\Models\User.php

 <?php

 namespace App;

 use Illuminate\Notifications\Notifiable;
 use Illuminate\Contracts\Auth\MustVerifyEmail;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use App\Presence;
 use App\Models\Project;
 use App\Productivity;
 use App\Sick_leave;
 use App\Annual_leave;
 use App\Models\Team;

 class User extends Authenticatable
 
   use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password', 'level',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

public function presence()
    
        return $this->hasOne(Presence::class, 'astrowatch', 'user_id', 'presence_id');
    

public function role()
    
        return $this->belongsTo(Role::class, 'role_id');
    

public function permission()
    
        return $this->hasMany(Permission::class);
    

public function teams()
    
        return $this->belongsToMany(Team::class, 'user_teams');
    
  

错误是

“无法声明类 App\User,因为该名称已在使用中”在我的浏览器中。 我试过use Illuminate\Database\Eloquent\User as EloquentUser,但没有任何改变,仍然有错误。

这个错误

【问题讨论】:

你试过composer dumpautoload吗? 已经试过composer dump-autoload 我遇到了这个问题,composer dump-autoload 没有解决,然后使用这个解决方案***.com/a/64385832/308578 【参考方案1】:

换你namespace

<?php

namespace App\Models;

 use Illuminate\Notifications\Notifiable;
 use Illuminate\Contracts\Auth\MustVerifyEmail;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use App\Presence;
 use App\Models\Project;
 use App\Productivity;
 use App\Sick_leave;
 use App\Annual_leave;
 use App\Models\Team;

 class User extends Model implements Authenticatable
 
   use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password', 'level',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

public function presence()

    return $this->hasOne(Presence::class, 'astrowatch', 'user_id','presence_id');


public function role()

    return $this->belongsTo(Role::class, 'role_id');




这将解决您的命名空间问题

【讨论】:

"Cannot declare class App\Models\User, because the name is already in use" 您的模型文件夹中是否还有其他名称为 User 的模型 我没有【参考方案2】:

在新版本的 Laravel(8+ 版本)中,模型保存在一个新文件夹中,即 Models inside Http。

您收到此错误是因为您的文件位于该文件夹内,但命名空间未通向该文件夹,并且无法找到所需的文件,因为它位于该文件夹内。

简单的改变

namespace App;

namespace App\Models;

会解决你的问题。

【讨论】:

【参考方案3】:

也许您尝试将您的命名空间更改为 namespace App\Models; 到您的用户模型?

【讨论】:

"Cannot declare class App\Models\User, because the name is already in use"【参考方案4】:

答案有点晚,但我遇到了同样的问题并使用composer dump autoload解决了它。

我已经移动了 Models 文件夹中的模型,而自动加载文件不是最新的。

【讨论】:

【参考方案5】:

auth.php文件中的以下代码替换您的代码

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
    ],

【讨论】:

以上是关于无法声明类 App\User,因为该名称已在我的浏览器中使用的主要内容,如果未能解决你的问题,请参考以下文章

无法声明类,因为该名称已在使用中?

致命错误:无法声明类 ProductFilterIterator,因为该名称已在

“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”

致命错误:无法声明类 Locale,因为该名称已在

PHP:无法声明类,因为名称已在使用中

以 Clover XML 格式生成代码覆盖率报告 ... PHP 致命错误:无法声明类 ...,因为名称已在