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

Database 无法声明类App\User,因为该名称已在我的浏览器中使用,database,laravel,model,eloquent,Database,Laravel,Model,Eloquent,当我运行程序时。我的模型用户中有错误。路径为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\Model

当我运行程序时。我的模型用户中有错误。路径为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');
    }
  }

也许您尝试将名称空间更改为
名称空间应用程序\模型
到您的用户模型?

更改您的
名称空间

<?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');
}


}

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


我已将模型移动到“模型”文件夹中,而自动加载文件不是最新的。

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

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

简单地改变

namespace App;


将解决您的问题。

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

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

“无法声明class App\Models\User,因为该名称已在使用”
您的模型文件夹中是否有其他名为UserI的模型我没有它
“无法声明class App\Models\User,因为该名称已在使用”
您是否尝试过
composer dump autoload
?已尝试过
composer dump autoload
我遇到此问题,但没有通过composer dump autoload解决,然后使用此解决方案
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
    ],