Да, fetch () ожидает результата от SELECT, а это не то, что выполняет ваш запрос.
Я рекомендую вместо непосредственного взаимодействия с PDO через компонент DataSource PPI, который вы используетеКомпонент PPI \ DataSource \ ActiveQuery.Это выполняет соответствующий код PDO под капотом, что, конечно, выполняется Doctrine DBAL (который PPI Framework абстрагирует).
Ниже приведен пример использования класса ActiveQuery PPI.
<?php
namespace App\Model;
class User extends \PPI\DataSource\ActiveQuery {
protected $_meta = array(
'table' => 'users',
'primary' => 'id',
'conn' => 'main' // See your connections.php configuration
);
}
Это все, что вам нужно, теперь PPI может сделать все остальное за вас.Чтобы обновить запрос, вы можете сделать:
<?php
$model = new \App\Model\User();
$data = array('active' => 1);
$where = array('email' => 'x', 'activationCode' => 'x');
$result = $model->update($data, $where);
Чтобы увидеть, что происходит с ActiveQuery-> update (), вы можете начать трассировку здесь: https://github.com/ppi/framework/blob/master/PPI/DataSource/PDO/ActiveQuery.php#L127
Удачи.
Пол Драгунис.