【发布时间】:2016-02-07 10:37:59
【问题描述】:
我正在尝试通过 DatabaseSeeder Laravel 为我的数据库播种,但是当它为数据库播种时,第一行的 ID 为 2 而不是 1。
DatabaseSeeder.php
public function run()
{
foreach ($this->to_truncate as $table) {
DB::table($table)->truncate();
}
$this->call('UsersTableSeeder');
}
UsersTableSeeder.php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
public function run()
{
factory('App\User', 1)->create();
}
}
ModelFactory.php
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'full_name' => 'Jakub Kohout',
'username' => 'Admin',
'email' => 'test@gmail.com',
'password' => bcrypt('Uchiha'),
'role_id' => 1
];
});
我的播种过程如下:
heroku run php artisan migrate
heroku run php artisan db:seed
这是我的用户模型的迁移:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('username');
$table->string('email')->unique();
$table->string('full_name');
$table->integer('role_id')->unsigned();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
【问题讨论】:
-
请解释(显示工匠命令,修补命令)你如何运行你的种子和工厂(编辑问题)
-
您的用户模型迁移是默认的(来自 Laravel)还是已修改?
-
不,它已被修改,只是将其添加到问题中。
-
去本地开发,打开终端使用
$ php artisan tinker。同时去你的 phpmyadmin 或 Sequel Pro 并手动截断用户表 + 重置自动计数。在 Psy Shell (tinker) 中输入factory(App\User::class, 1)->create()。输出是什么? -
所以我在 sequelPro 中手动截断表然后重置自动增量计数,但思想家仍然说这个 App\User {#752 full_name: "Jakub Kohout", username: "Admin", email: "test@ gmail.com”,role_id:1,updated_at:“2016-02-07 11:53:19”,created_at:“2016-02-07 11:53:19”,id:2,}
标签: php laravel laravel-5.1 seeding