如何将播种机文件分开并清理干净?

时间:2016-06-13 19:46:04

标签: php laravel composer-php laravel-5.2 psr-4

我希望将播种机文件分开。例如UsersTableSeeder.phpPostsTableSeeder.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.phpPostsTableSeeder.php个文件是相同的 DatabaseSeeder.php所在的目录。

我应该使用psr-4自动加载吗?如何?

2 个答案:

答案 0 :(得分:1)

Composer.json配置

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进行种子和迁移更加清洁(测试已经完成)。