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

时间:2018-10-16 06:12:02

标签: 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\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,但没有任何变化,仍然是错误。

此错误 error image

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

更改您的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');
}


}

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

出现此错误的原因是,文件位于该文件夹中,但命名空间未指向该文件夹,并且找不到所需的文件,因为该文件位于该文件夹中。

只需更改 命名空间应用;

到 命名空间App \ Models;

将解决您的问题。

谢谢。

答案 4 :(得分:0)

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

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