无法声明类 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,因为该名称已在