Extbase TYPO3 — расширение запроса с помощью пользовательских частей WHEREPhp

Кемеровские программисты php общаются здесь
Anonymous
Extbase TYPO3 — расширение запроса с помощью пользовательских частей WHERE

Сообщение Anonymous »

У меня есть модель («предложения»), которая имеет атрибуты lat/lng среди многих других метаатрибутов. Внутри метода репозитория я могу получать предложения в соответствии с соответствующими метаданными, например:

Код: Выделить всё

$where[] = $query->equals('special', 1);
$where[] = $query->equals('region', 7);
$where[] = $query->greaterThan('crdate', $minTime);
Теперь мне нужно иметь возможность осуществлять поиск по радиусу в зависимости от атрибутов широты и долготы. В обычном SQL-запросе это будет примерно так:

Код: Выделить всё

WHERE acos(sin(:lat)*sin(radians(lat)) + cos(:lat)*cos(radians(lat))*cos(radians(lng)-:lng)) * :R < :rad
Однако, поскольку он содержит математические значения, я не вижу возможности добавить аналог $query. Как я могу передать такую ​​часть WHERE в запрос extbase?

Чего хотелось бы избежать:
  • Использование необработанного admin_query() с $GLOBALS['TYPO3_DB'] со всеми теми же условиями $where, которые я собрал перед методом выполнения() соответствующего запроса, для сбора UID доступных записей и добавьте к $query условие, которое возвращает только те, которые соответствуют UID второго запроса.
  • Переписав весь метод репозитория, чтобы использовать raw sql и повторите его, чтобы сгенерировать правильную ER-модель Extbase.
Поэтому в идеале я бы хотел иметь что-то вроде:

Код: Выделить всё

$query->customSQL('blablabla > bla');
который позже будет добавлен к части SQL WHERE. Возможно, я мог бы сначала создать заполнитель, например

Код: Выделить всё

$query->equals('placeholder', 1);
а затем каким-то образом получить оператор перед выполнением, выполните

str_replace('placeholder = 1', ' ...мой настоящий оператор радиуса...')

Но я вижу только getStatement(), а не setStatement() в QueryInterface...

Подробнее здесь: https://stackoverflow.com/questions/427 ... here-parts

Вернуться в «Php»