2016-01-22 3 views

ответ

0

Я думаю, что единственное решение для Extbase запроса является

$query->statement('SELECT AVG(clicks) FROM tablename ...') 

Или нет?

+0

Nop, Я ищу такие методы, как AVG(), MAX() и другие агрегированные функции, как у нас уже есть для LIKE(), IN() и т. д. –

+1

Эти методы не существуют в Extbase: [Ссылка класса запросов] (https: // typo3. орг/апи/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_generic_1_1_query.html). –

2

Насколько я знаю, Extbase не поддерживает использование агрегатных функций в ORM. Подробнее см. Здесь: https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html

Вам нужно будет построить SQL-запрос самостоятельно (в инструкции) и сообщить запросу вернуть исходный результат (который хранится в массиве) вместо возврата объектно-ориентированного запроса.

Exemple:

$query = $this->createQuery(); 
$query->statement("SELECT AVG(clicks) as 'avg' FROM tablename ..."); 
$query->getQuerySettings()->setReturnRawQueryResult(TRUE); 
$result = $query->execute()[0][avg]; 

Cheers, Оливье

-1

Единственная функция, которую вы можете использовать это COUNT() с

return $query->execute()->count(); 

Для всех других функций, которые вы должны сделать родной запрос, как описанные в других ответах