【问题标题】:How to keep seeder files separate and clean in laravel?如何在 laravel 中保持播种器文件分离和清洁?
【发布时间】:2016-10-14 08:34:45
【问题描述】:

我想将我的播种器文件分开。例如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 自动加载吗?怎么样?

【问题讨论】:

  • 您发布的内容不正常吗?
  • 它给了我:[ReflectionException] 类 UsersTableSeeder 不存在!在控制台中
  • 而文件database/seeders/UsersTableSeeder.php 以该确切文件名存在,并且它包含class UsersTableSeeder extends Seeder 声明? Laravel 的默认 Composer 设置应该已经正确地自动加载这些。 github.com/laravel/laravel/blob/master/database/seeds/…
  • 我会编辑问题!
  • 得到了答案!你在哪里对! !非常感谢您的宝贵时间。

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


【解决方案1】:

Composer.json 配置

composer.json 有一个 autoload 键来配置其他自动加载路径。
你可以试试看:


    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    }

来自我的 composer.json 的示例

从播种器类中删除命名空间行。现在可以通过classmap 条目找到它们。

显式命名空间

保留命名空间并将它们添加到对 -&gt;call() 的调用中。
无论您在何处编写类名,都可以使用其命名空间完全限定该类(应为 \database\seeds\YourClass::class,这可能取决于您的 composer.json 设置),或者在文件开头添加一条 use 语句。

【讨论】:

    【解决方案2】:

    您可能需要运行composer dump-autoload。它对我有用。

    附带说明一下,使用 PSR-4 进行种子和迁移会更清洁(测试已经这样做了)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多