Я чувствую, что у меня есть момент, когда я пропускаю что-то маленькое; У меня возникли проблемы с использованием метода insert()
в компоненте QueryBuilder в Dotrine DBAL 2.2.x / 2.3.x.
Я провел некоторое расследование, и вот фрагмент с страницы QueryBuilder из DBAL Documantation
\ Doctrine \ DBAL \ Query \ QueryBuilder поддерживает построение запросов SELECT, INSERT, UPDATE и DELETE. Какой тип запроса вы строите, зависит от методов, которые вы используете.
Далее идет объяснение примеров кода, которые я могу просто сделать:
$builder = $connection->createQueryBuilder(); $result = $builder ->insert('table_name') // ...
Использовать построитель запросов в режиме вставки . За исключением случаев, когда я это делаю, я получаю жалобу от PHP:
Неустранимая ошибка : вызов неопределенного метода Doctrine \ DBAL \ Query \ QueryBuilder :: insert ()
При дальнейшей проверке исходного кода QueryBuilder.php
Я не вижу ссылки на какой-либо метод insert(...)
, ни один класс не наследует это, никаких черт, добавленных в QueryBuilder
которые могут выставить механизм вставки. Кроме того, я вижу это прямо вверху:
/* The query types. */ const SELECT = 0; const DELETE = 1; const UPDATE = 2;
Нет типа запроса вставки; однако есть интересный комментарий метода для execute()
:
/** * Execute this query using the bound parameters and their types. * * Uses {@see Connection::executeQuery} for select statements and {@see Connection::executeUpdate} * for insert, update and delete statements. * * @return mixed */
Это масштабный проект с участием 100-ти человек, у меня больше шансов найти здесь мою интерпретацию, чем отвращение к чему-то столь фундаментальному из-за многочисленных версий, но я не могу за всю жизнь понять, что мне не хватает. Пожалуйста, помогите мне увидеть очевидное.
Это зависит от вашей версии. Вставка была добавлена с версии v2.5.0-BETA3.
Viz https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Query/QueryBuilder.php#L563 и зафиксировать
Вы можете решить обновить версию пакета или проверить это альтернативное решение