Запросы могут быть выполнены с помощью execute()и query()методами. execute()Метод возвращает количество строк , затронутых в то время как query()метод возвращает результат как PDOStatement

 

<?php

use Phinx\Migration\AbstractMigration;

class MyNewMigration extends AbstractMigration
{
    /**
     * Migrate Up.
     */
    public function up()
    {
        // execute()
        $count = $this->execute('DELETE FROM users'); // returns the number of affected rows

        // query()
        $stmt = $this->query('SELECT * FROM users'); // returns PDOStatement
        $rows = $stmt->fetchAll(); // returns the result as an array
    }

    /**
     * Migrate Down.
     */
    public function down()
    {

    }
}

 

Эти команды выполняются с использованием расширения PHP Data Objects (PDO), которое определяет легкий, согласованный интерфейс для доступа к базам данных в PHP. Перед использованием execute()команды всегда убедитесь, что ваши запросы соответствуют PDO . Это особенно важно при использовании DELIMITER во время вставки хранимых процедур или триггеров, которые не поддерживают DELIMITER.

При использовании execute()или query()с пакетом запросов PDO не генерирует исключение, если есть проблема с одним или несколькими запросами в пакете.

Таким образом, предполагается, что вся партия прошла без проблем.

Если бы Phinx перебирал любые потенциальные наборы результатов, пытаясь увидеть, есть ли в них ошибка, тогда Phinx отказывал бы в доступе ко всем результатам, поскольку в PDO нет возможности получить предыдущий набор результатов nextRowset () - но нет previousSet()).

Таким образом, как следствие, из-за проектного решения в PDO не генерировать исключение для пакетных запросов, Phinx не может обеспечить наиболее полную поддержку обработки ошибок при предоставлении пакетов запросов.

К счастью, доступны все функции PDO, поэтому в процессе миграции можно управлять несколькими пакетами, вызывая nextRowset () и проверяя errorInfo .