Intereting Posts
Добавление значений переключателя в таблицу MYSQL с помощью PHP Что такое JSON.parse, написанный в / Это открытый источник? Многопоточный оператор for для php Как я могу использовать cURL для открытия нескольких URL одновременно с PHP? подготовленное заявление с Eloquent ORM / laravel Обнаружить, если загруженный файл слишком большой Предупреждение: mysql_real_escape_string (): доступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ) Я использую fopen или curl для загрузки XML-файла с указанием URL-адреса в PHP Прочтите файл csv и создайте еще один файл csv, используя php Глобальная переменная – соединение с базой данных? Ошибка запуска приложения Google App Engine: «C: / Documents and Settings / userName / php» является каталогом, и требуется файл конфигурации yaml Как определить, является ли строка действительной JSON? получение mysql_insert_id () при использовании ON DUPLICATE KEY UPDATE с PHP УДАЛИТЬ запись в строке в PHP Laravel-Multiauth не работает в Laravel 5.2

Отсутствует метод insert () в Doctrine DBAL Query Builder

Я чувствую, что у меня есть момент, когда я пропускаю что-то маленькое; У меня возникли проблемы с использованием метода 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 и зафиксировать

Вы можете решить обновить версию пакета или проверить это альтернативное решение