Я использую phinx для обработки миграции в новом проекте, теперь мне нужно создать новую таблицу и вставить в нее несколько строк, у меня есть:
$tableStatus = $this->table('status'); $tableStatus->addColumn('code', 'string'); $tableStatus->addColumn('description', 'string'); $tableStatus->save();
Это добавит новую таблицу, но я не смог найти в документации, как вставлять строки, но это кажется возможным:
Класс AbstractMigration All Phinx распространяется из класса AbstractMigration. Этот класс обеспечивает необходимую поддержку для создания миграции базы данных. Миграции баз данных могут преобразовывать вашу базу данных различными способами, такими как создание новых таблиц, вставка строк , добавление индексов и изменение столбцов.
Возможно? Как мне это сделать?
Как указал игресситер, существует метод для этого, имя метода вставляется
use Phinx\Migration\AbstractMigration; class NewStatus extends AbstractMigration { protected $statusId = 1234; //It'd be nice to use an entity constant instead of magic numbers, but that's up to you. protected $statusName = 'In Progress'; /** * Migrate Up. */ public function up() { $columns = ['id', 'name']; $data = [[$this->statusId, $this->statusName]]; $table = $this->table('status'); $table->insert($columns, $data); $table->saveData(); } /** * Migrate Down. */ public function down() { $this->execute('Delete from status where id = ' . $this->statusId); } }
Изменить на 2 декабря 2015 г.
Подпись этого метода изменится в будущих стабильных версиях на что-то вроде
$data = [ ['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar'] ]; $table = $this->table('status'); $table->insert($data);
Больше информации здесь
Ты можешь это сделать. Прочтите документацию для получения дополнительной информации.
http://docs.phinx.org/en/latest/migrations.html#executing-queries
use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration { /** * Migrate Up. */ public function up() { // execute() $count = $this->execute('insert into users(id, name) values (5, "john")'); } /** * Migrate Down. */ public function down() { } }
Этот вопрос имеет хороший ответ с помощью плагина CakePHP 3 Migrations :
public function up() { // Save records to the newly created schema $UsersTable = TableRegistry::get('Users'); $user = $UsersTable->newEntity(); $user->name = 'Joe Bloggs'; $user->email = 'joe@example.com'; $UsersTable->save($user); }