Выполнить params с доктриной, используя именованные параметры - PullRequest
1 голос
/ 05 мая 2011

У меня странная проблема с доктриной и именованными параметрами.

Вот запрос, который на самом деле отлично работает с этим набором параметров (динамический в моем коде):

$params = array(    ':id_editeur' => 1,
                    ':nom_editeur' => 'Test');

public function updateById($params)
{
    Doctrine_Query::create()
       ->update('Editeur e')
       ->set('e.nom_editeur', ':nom_editeur')
       ->where('e.id_editeur = :id_editeur')
       ->execute($params);
}

Теперь у меня есть другая функция

public function findAll($params)
{
    $query = Doctrine_Query::create()
        ->from('Editeur e')
        ->orderBy(':orderby')
        ->limit(':limit')
        ->offset(':offset');

    return $query->execute($params);
}

С этими параметрами:

    $params = array(    ':orderby' => ('e.id_editeur ASC'),
                        ':limit' => (10),
                        ':offset' => (20));

И даже если это тот же механизм, я получаю следующую ошибку

Неверный номер параметра: номер связанные переменные не совпадают с числом токенов

Есть идеи о причине? Кстати, это работает, если я заполняю orderby, limit и offset прямо в функции классическим способом.

Ответы [ 2 ]

1 голос
/ 18 апреля 2013

Параметры params не могут содержать символ ":" ...

Попробуйте заменить:

$params = array(    ':id_editeur' => 1,
                ':nom_editeur' => 'Test');

до:

$params = array(    'id_editeur' => 1,
                'nom_editeur' => 'Test');
0 голосов
/ 05 мая 2011

Попробуйте удалить скобки в массиве params.

$params = array(    ':orderby' => 'e.id_editeur ASC',
                    ':limit' => '10',
                    ':offset' => '20');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...