Laravel 8 类 'Database\Seeders\App\Models\Admin' 未找到

Posted

技术标签:

【中文标题】Laravel 8 类 \'Database\\Seeders\\App\\Models\\Admin\' 未找到【英文标题】:Laravel 8 Class 'Database\Seeders\App\Models\Admin' not foundLaravel 8 类 'Database\Seeders\App\Models\Admin' 未找到 【发布时间】:2021-03-11 11:16:11 【问题描述】:

我目前正在学习 Laravel 8 中的数据库播种。运行种子时出现错误消息

找不到类'Database\Seeders\App\Models\Admin'

首先我在 App\Models 中创建了名为 Admin.php 的迁移数据库文件,并将这些代码放入

<?php

namespace App\Models;

use Illuminate\Notification\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
//use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;


class Admin extends Authenticatable

    use Notifiable;
    protected $guard = 'admin';
    protected $fillable = [
        'name', 'type','email','password','image','status','created_at','updated_at',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];

之后我创建了一个名为 AdminsTableSeeder.php 的播种器并放置了这些代码

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use DB;

class AdminsTableSeeder extends Seeder

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    
        DB::table('admins')->delete();
        $adminRecords = [
            [
                'id'=>1, 
                'name'=>'admin', 
                'type'=>'admin',
                'email'=>'admin@admin.com',
                'password'=>'',
                'image'=>'',
                'status'=>1,
            ],
        ];
        foreach ($adminRecords as $key => $record)
            App\Models\Admin::create($record);
        
    

最后在 DatabaseSeeder.php 我把这些代码调用 AdminsTableSeeder

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder

    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    
        $this->call(AdminsTableSeeder::class);

    

完成所有这些操作后,我执行了 composer du 并尝试运行种子命令,但收到错误消息。

编辑 我已经尝试从

修改代码
foreach ($adminRecords as $key => $record)
            App\Models\Admin::create($record);
        

foreach ($adminRecords as $key => $record)
            \App\Models\Admin::create($record);
        

但我仍然收到类似的错误消息

播种:Database\Seeders\AdminsTableSeeder PHP 致命错误:在 C:\xam 中找不到特征 'Illuminate\Notification\Notifiable' pp\htdocs\tobacon_web\app\Models\Admin.php 在第 11 行

Symfony\Component\ErrorHandler\Error\FatalError

未找到特征“Illuminate\Notification\Notifiable”

【问题讨论】:

App\Models\Admin::create($record);\App\Models\Admin::create($record); 嘿,我之前已经尝试过了,但它仍然显示错误消息,您可以查看我已经编辑并解释了问题的帖子 use Illuminate\Notification\Notifiable;use Illuminate\Notifications\Notifiable; 修复此问题 【参考方案1】:

在您的 AdminsTableSeeder.php 文件中,更改以下行:

App\Models\Admin::create($record);

\App\Models\Admin::create($record);

或在文件顶部添加一条使用语句use App\Models\Admin,然后将代码编辑为Admin::create($record)

【讨论】:

嘿,我已经尝试修改代码,但我认为出现了另一个问题。你可以看到我编辑过的帖子,在我修改代码后我已经在那里解释了错误说“未找到 Trait 'Illuminate\Notification\Notifiable'” Notifiable 特征在 Illuminate\Notifications\Notifiable 中找到。您正尝试从Illuminate\Notification\Notifiable 使用它。这就是您收到错误的原因。【参考方案2】:

如果您复制 User.php 以创建 Admin.php 模型,则可能会出现此错误。

纠正这个检查

Admin.php

//change 

class User extends Authenticatable


//to 

class Admin extends Authenticatable

【讨论】:

欢迎来到 Stack Overflow!请花点时间阅读editing help 中的help center。 Stack Overflow 上的格式与其他网站不同。

以上是关于Laravel 8 类 'Database\Seeders\App\Models\Admin' 未找到的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 工厂类在创建工厂时不会覆盖参数

目标类控制器不存在 - Laravel 8

Laravel 8:找不到类'App\Policies\Gate'

PHP 错误:类 'Illuminate/Foundation/Auth/Admin' [Laravel 8]

Laravel Target 类 [register] 从 5.8 版本迁移到 8 后不存在

Laravel 8 基于类的模型工厂