Я пытаюсь написать простой REST API для laravel 4.2. Вот мой код:
Это команда для создания двух таблиц:
php artisan migrate:make create_users_table --table=users --create
php artisan migrate:make create_urls_table --table=urls --create
Затем я добавил этот код в up
секции create_users_table.php
:
$table->increments('id');
$table->string('username')->unique();
$table->string('password');
$table->timestamps();
Я добавил этот код в up
секции create_urls_table.php
:
$table->increments('id');
$table->integer('user_id');
$table->string('url');
$table->string('description');
$table->timestamps();
Мои конфигурации db выглядят следующим образом:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'read_it_later',
'username' => '<username>',
'password' => '<password>',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Затем я добавил это в UserTableSeeder.php
в папку seeds
папке database
:
<?php
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
User::create(array(
'username' => 'firstuser',
'password' => Hash::make('first_password')
));
User::create(array(
'username' => 'seconduser',
'password' => Hash::make('second_password')
));
}
}
Затем я раскомментировал $this->call('UserTableSeeder')
в файле DatabaseSeeder.php
.
Затем я выполнил следующую команду:
php artisan migrate
И я получил следующую ошибку:
**************************************
* Application In Production! *
**************************************
Do you really wish to run this command? y
Migration table created successfully.
[Illuminate\Database\QueryException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'read_it_later.users' doesn't exist (SQL: alter table 'users' add 'id' int unsigned not
null auto_increment primary key, add 'username' varchar(255) not null, add 'password' varchar(255) not null, add 'created_at' timestamp default 0
not null, add 'updated_at' timestamp default 0 not null)
[PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'read_it_later.users' doesn't exist
migrate [--bench[="..."]] [--database[="..."]] [--force] [--path[="..."]] [--package[="..."]] [--pretend] [--seed]
Как я могу исправить эту ошибку?
Я только узнал, что я использовал неправильную команду для создания таблиц миграции.
Я использовал следующие команды:
php artisan migrate:make create_users_table --create=users
php artisan migrate:make create_urls_table --create=urls
Затем я добавил свой код в эти файлы и пробовал эти команды:
php artisan migrate
php artisan db:seed
И это сработало
Schema:create
а неSchema::table
в своих миграциях.