我希望将播种机文件分开。例如UsersTableSeeder.php
,PostsTableSeeder.php
,然后在主播种文件(DatabaseSeeder.php
)中调用它们:
示例:
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call(UsersTableSeeder::class);
$this->call(PostsTableSeeder::class);
}
}
usersTableSeeder.php:
<?php namespace App\Seeds;
use Illuminate\Database\Seeder;
use App\User;
class UserTableSeeder extends Seeder {
public function run()
{
//DB::table('users')->delete();
// user1
User::create(array(
'name' => 'ahmad',
'email' => 'ahmad@ahmad.com',
'password' => 'ahmad'
));
}
}
我的UsersTableSeeder.php
和PostsTableSeeder.php
个文件是相同的
DatabaseSeeder.php
所在的目录。
我应该使用psr-4
自动加载吗?如何?
答案 0 :(得分:1)
composer.json
具有一个autoload
键,用于配置其他自动加载路径。
您可以尝试一下:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
}
我composer.json中的示例
从播种器类中删除名称空间行。现在可以通过classmap
条目找到它们。
OR
保留名称空间,并将其添加到对->call()
的调用中。
无论在何处编写类名,都可以使用其名称空间(应为\database\seeds\YourClass::class
,这取决于您的composer.json
设置)来完全限定该类的名称,或者在文件的开头添加use语句。>
答案 1 :(得分:0)
您可能需要运行composer dump-autoload
。它对我有用。
作为旁注,使用PSR-4进行种子和迁移更加清洁(测试已经完成)。