Загрузите расширение sqlite с помощью Doctrine

Я пытаюсь загрузить расширение Sqlite3 в проект Doctrine 2 (в частности, расширение pcre, которое я установил через пакет debian sqlite3-pcre).

В простом проекте PHP я бы сделал что-то похожее на

$db = new SQLite3('mysqlitedb.db');
$db->loadExtension('pcre.so');

(согласно http://php.net/manual/en/sqlite3.loadextension.php).

Моя проблема в том, что я не знаю, где указать Doctrine для вызова loadExtension или любого другого способа загрузить это расширение.


Боковые примечания:

  • Это проект Symfony 4. Причина, по которой я использую Sqlite3, - это мои функциональные тесты (среды разработки и производства используют Postgresql).
  • Я реализовал два расширения Doctrine, аналогичные тому, что сделано в (полуофициальном?) Проекте DoctrineExtensions (например, в https://github.com/beberlei/DoctrineExtensions/blob/master/src/Query/Mysql/Regexp.php):
    • Один для Postgresql с использованием оператора ~. Этот отлично работает.
    • Один для Sqlite3 с использованием оператора REGEXP из расширения pcre. Этот жалуется, что REGEXP не определен, так как мне не удалось загрузить расширение pcre.

Буду благодарен за любую идею о том, как решить эту проблему.

Конечно, это не валидный тест, если вы не используете все те же инструменты в тесте.

RiggsFolly 24.09.2018 18:38

@RiggsFolly Во вселенной Symfony нередко есть функциональные тесты, которые запускаются в тестовой базе данных, в зависимости от того, что вы тестируете. Считайте их промежуточными между модульными и функциональными тестами (и, конечно, вы можете проводить «реальные» тесты в базе данных, подобной продуктам). Пакет, который мы используем для наших тестов, - github.com/liip/LiipFunctionalTestBundle, и следует этой философии. Он рекомендует использовать базу данных sqlite3 в памяти для повышения скорости, что мы и делаем. Расширение Postgres Doctrine Extension для регулярных выражений, которое не используется в этих функциональных тестах, тестируется отдельно.

NicolasB 24.09.2018 18:56

@NicolasB Удалось ли вам найти решение с тех пор, как вы разместили этот вопрос? Я столкнулся с проблемой желания протестировать запрос REGEXP в базе данных sqlite.

Boschman 06.10.2020 13:22

@Boschman К сожалению, нет. Два возможных решения приведены в stackoverflow.com/questions/8756146/…, но они были немного излишними для нашей проблемы, поэтому мы решили отказаться от этого.

NicolasB 06.10.2020 14:23

@NicolasB Спасибо! Сейчас я работаю над решением без sqlite в тестовой среде.

Boschman 06.10.2020 18:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
232
0

Другие вопросы по теме