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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Typo3 Extbase — Почему мой объект сущности не обновляется, а создается заново? В каких случаях объекты являются временны
    Гость » » в форуме Php
    0 Ответы
    36 Просмотры
    Последнее сообщение Гость
  • Внутренняя отладка Typo3 (Extbase)
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Внутренняя отладка Typo3 (Extbase)
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как заставить расширение extbase распознавать страницу хранилища из плагина?
    Anonymous » » в форуме Php
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Ссылки на говорящие URL (realurl) не отображаются в расширении extbase
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

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