【问题标题】:Database Seeding in Laravel 5.1Laravel 5.1 中的数据库播种
【发布时间】:2016-02-10 16:56:39
【问题描述】:

我正在使用 laravel 5.1。我正在尝试运行数据库播种命令。

我的表名是users

我的迁移文件如下

2015_11_09_194832_create_users_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
         Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

DatabaseSeeder.php

<?php

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

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();
        $this->call(UsersTableSeeder::class);
        Model::reguard();
    }
}

UsersTableSeeder.php

<?php

// DatabaseSeeder.php
use App\User;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;



class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();
        DB::table('users');
        $users = array(
                ['name' => 'Ryan Chenkie', 'email' => 'ryanchenkie@gmail.com', 'password' => Hash::make('secret')],
                ['name' => 'Chris Sevilleja', 'email' => 'chris@scotch.io', 'password' => Hash::make('secret')],
                ['name' => 'Holly Lloyd', 'email' => 'holly@scotch.io', 'password' => Hash::make('secret')],
                ['name' => 'Adnan Kukic', 'email' => 'adnan@scotch.io', 'password' => Hash::make('secret')],
        );

        // Loop through each user above and create the record for them in the database
        foreach ($users as $user)
        {
            User::create($user);
        }
        Model::reguard();
    }
}

当我尝试运行播种命令时 php artisan db:seed 出现以下错误。

  [ReflectionException]
  Class UsersTableSeeder does not exist

谁能在这方面帮助我??

【问题讨论】:

  • 两个类都在同一个全局命名空间中,因此不需要“使用”。尝试运行“composer dump-autoload” - 它应该重新加载播种机列表。
  • 创建新播种器后,您应该在项目根目录中运行composer dumpautoload
  • 正如上述两位用户评论的那样,您需要在项目根目录中使用composer dump-autoload。您可以在终端中使用相应的命令

标签: php laravel-5.1


【解决方案1】:

当我在新项目或现有项目中添加播种机时,我已经遇到过几次这个问题,我想在其中添加一些数据进行测试。

jedrzej.kurylo 和 Alex 都在正确的轨道上,composer dump-autoload 将重新生成您的自动加载文件并包含您刚刚添加的播种器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2018-05-20
    • 2017-05-03
    • 1970-01-01
    相关资源
    最近更新 更多