Прежде всего, вы делаете объединенный запрос с подмножествами данных, смешанными из нескольких таблиц. Против этого ничего нет.
Из-за этого не существует «модели» со смешанными наборами данных.
Если вы используете объект запроса по умолчанию в хранилище, магия позади хранилища предполагает, что результат оператора запроса отражает определенную базовую модель для этого хранилища.
Перемещение функции запроса в другой репозиторий не решает проблему.
Вы не предоставили фрагмент кода, который выполняете оператор sql, поэтому я предполагаю, что вы использовали запрос в репозитории для выполнения оператора. Примерно так:
$result = $query->statement('
SELECT p.productname, p.productpriceperpiece,
pop.amount, pop.size,
h.name, h.address, h.zipcode, h.city, h.email, h.phone,
f.first_name, f.last_name, f.email
FROM `tx_gipdshop_domain_model_productorderposition` AS pop
JOIN `tx_gipdshop_domain_model_product` AS p ON pop.products = p.uid
JOIN `tx_gipdshop_domain_model_productsorder` AS po ON pop.productorder = po.uid
JOIN `tx_gipleasedisturbhotels_domain_model_hotel` AS h ON po.hotel = h.uid
JOIN `fe_users` AS f ON h.feuser = f.uid', NULL);
или использовали материал для построения запросов.
Первое решение
Первое и самое простое решение - получить результат в виде простого php-массива. До TYPO3 7.0 вы могли бы сделать это, используя это:
$query->getQuerySettings()->setReturnRawQueryResult(TRUE);
В TYPO3 7.0 этот устаревший метод был удален из ядра.
Единственный способ - определить запрос и сейчас вызвать $query->execute(TRUE);
.
Это должно вернуть данные в виде чистого массива.
Это самый простой вариант, но, поскольку мы находимся в контексте extbase, этого не должно быть достаточно.
Второе решение - нет, просто идея, которую я бы попробовал в следующем
Второе решение означает, что у вас есть какая-то работа, и на данный момент это только предложение, потому что я не пробовал это сам.
- Создание модели со свойствами и получателями / установщиками для столбцов результатов вашего запроса
- Создать соответствующий репозиторий
Третий раствор
Не приятно, но если ничего не работает, вернитесь к старым методам запроса TYPO3 v4:
$GLOBALS['TYPO3_DB']->exec_SELECTgetRows([...]))
и замените его на QueryBuilder в / для TYPO3 v8.
Это действительно нехорошо.
Надеюсь, я смогу направить вас в правильном направлении, даже если не дал полного решения проблемы.