dimanche 12 novembre 2017

While seeding database in Laravel, why with same code for one model's seeder as the previous which is successful, do I get an error?

I have two tables, manufacturers & models that I'm seeding via factories.

ManufacturersFactory:

use \Faker\Generator as Faker;

$factory->define(\Modules\Cars\Entities\Manufacturer::class, function (Faker $faker) {
    return [
        'title' => $faker->company,
        'summary' => $faker->paragraph,
        'url' => $faker->domainName,
        'dealer' => $faker->boolean(20),
    ];
});

ManufacturersTableSeeder:

namespace Modules\Cars\Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class ManufacturersTableSeeder extends Seeder
{
    public function run()
    {
      factory(\Modules\Cars\Entities\Manufacturer::class, 25)->create();
    }
}

^ Seeds perfectly successfully.

CarsDatabaseSeeder:

namespace Modules\Cars\Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class CarsDatabaseSeeder extends Seeder
{
    public function run()
    {
      \Eloquent::unguard();

      \DB::table('models')->truncate();
      \DB::table('manufacturers')->truncate();

      \DB::statement('SET FOREIGN_KEY_CHECKS=0;');

      $this->call([
        ManufacturersTableSeeder::class,
        ModelsTableSeeder::class
      ]);

      \DB::statement('SET FOREIGN_KEY_CHECKS=1;');
    }
}

ModelsFactory:

use \Faker\Generator as Faker;

$factory->define(\Modules\Cars\Entities\Model::class, function (Faker $faker) {
    return [
      'title' => $faker->word,
      'manufacturer_id' => $faker->numberBetween(1,\Modules\Cars\Entities\Manufacturer::get()->count()),
      'length_ft' => $faker->numberBetween(30,160),
    ];
});

ModelsTableSeeder:

namespace Modules\Cars\Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class ModelsTableSeeder extends Seeder
{
    public function run()
    {
        factory(\Modules\Cars\Entities\Model::class, 60)->create();
    }
}

No errors if I comment out the factory function.

I do not see how these two are different and thereby why I am receiving the following error when running with Models:

vagrant@laravel:~/code$ php artisan module:seed Cars
Seeding: Modules\Cars\Database\Seeders\ManufacturersTableSeeder
Seeding: Modules\Cars\Database\Seeders\ModelsTableSeeder
PHP Fatal error:  Cannot declare class Modules\Cars\Entities\Model because the name is already in use in /home/vagrant/code/Modules/Cars/Entities/Model.php on line 7


  [Symfony\Component\Debug\Exception\FatalErrorException]
  Cannot declare class Modules\Cars\Entities\Model because the name is already in use

Help please???



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2jk4NzM
via IFTTT

Aucun commentaire:

Enregistrer un commentaire