Laravel 5 中的 运行 播种机找不到模型 class
Model class not found when running Seeder in Laravel 5
我正在为我的应用程序创建管理员授权,并使用 artisan 命令生成了模型:
php artisan make:model Admin -m
这是生成的class:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Admin extends Model
{
//
}
这创建了一个空模型和一个基本迁移。我将此行添加到迁移中:
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('password', 64);
$table->string('remember_token', 100)->nullable();
$table->timestamps();
});
}
然后我用命令行创建了一个播种器:
php artisan make:seeder AdminTableSeeder
并将播种机添加到 DatabaseSeeder
public function run()
{
$this->call(AdminTableSeeder::class);
}
但是当我 运行 播种器 php artisan db:seed
时,我得到一个 class 缺失错误:
PHP Fatal error: Class 'Admin' not found in /laravelpath/database/seeds/AdminTableSeeder.php on line 15
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Admin' not found
好像是Admin模式。
我已经尝试 运行 修复 composer update
和 composer dump-autoload
但它们没有帮助。
有人知道发生了什么事吗?为什么会出现此错误以及如何修复它?
额外信息: 我在某处读到我应该为我的应用程序命名,所以我执行了 php artisan app:name MyAppName
并在所有地方添加了命名空间(至少在 Http
文件夹)。我不确定它是否弄乱了我的 classes。
@edit 1
这是 AdminTableSeeder
use Illuminate\Database\Seeder;
class AdminTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('admins')->delete();
Admin::create(array(
'name' => 'Victor Ferreira',
'username' => 'victorferreira',
'email' => 'victor.ferreira@live.com',
'password' => Hash::make('123456'),
));
}
}
在你的AdminTableSeeder.php
use App\Models\Admin;
查看您的管理模型,它位于 App\Models 命名空间下,这意味着您的管理模型位于 app/Models/ 文件夹下。如果这不起作用,以防您的 Admin 不在 app/Models 文件夹下,则从您的 Admin 模型中删除模型并创建命名空间 App\Admin
你用运行这个命令检查过了吗?
composer dump-autoload
你必须运行这个命令来自动加载所有新创建的文件。
运行 运行 或执行播种器文件之前的以下命令
composer dump-autoload -o
我正在为我的应用程序创建管理员授权,并使用 artisan 命令生成了模型:
php artisan make:model Admin -m
这是生成的class:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Admin extends Model
{
//
}
这创建了一个空模型和一个基本迁移。我将此行添加到迁移中:
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('password', 64);
$table->string('remember_token', 100)->nullable();
$table->timestamps();
});
}
然后我用命令行创建了一个播种器:
php artisan make:seeder AdminTableSeeder
并将播种机添加到 DatabaseSeeder
public function run()
{
$this->call(AdminTableSeeder::class);
}
但是当我 运行 播种器 php artisan db:seed
时,我得到一个 class 缺失错误:
PHP Fatal error: Class 'Admin' not found in /laravelpath/database/seeds/AdminTableSeeder.php on line 15
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Admin' not found
好像是Admin模式。
我已经尝试 运行 修复 composer update
和 composer dump-autoload
但它们没有帮助。
有人知道发生了什么事吗?为什么会出现此错误以及如何修复它?
额外信息: 我在某处读到我应该为我的应用程序命名,所以我执行了 php artisan app:name MyAppName
并在所有地方添加了命名空间(至少在 Http
文件夹)。我不确定它是否弄乱了我的 classes。
@edit 1
这是 AdminTableSeeder
use Illuminate\Database\Seeder;
class AdminTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('admins')->delete();
Admin::create(array(
'name' => 'Victor Ferreira',
'username' => 'victorferreira',
'email' => 'victor.ferreira@live.com',
'password' => Hash::make('123456'),
));
}
}
在你的AdminTableSeeder.php
use App\Models\Admin;
查看您的管理模型,它位于 App\Models 命名空间下,这意味着您的管理模型位于 app/Models/ 文件夹下。如果这不起作用,以防您的 Admin 不在 app/Models 文件夹下,则从您的 Admin 模型中删除模型并创建命名空间 App\Admin
你用运行这个命令检查过了吗?
composer dump-autoload
你必须运行这个命令来自动加载所有新创建的文件。
运行 运行 或执行播种器文件之前的以下命令
composer dump-autoload -o