2015-03-29 7 views
1

Я хочу использовать Extbase в своем проекте. Но я не получаю этот запрос к работе:Typo3 Extbase Как я могу получить все объекты с отношением = x?

SELECT 
    tx_domain_model_A.*, 
    tx_domain_model_B.* 
FROM 
    tx_domain_model_A LEFT JOIN tx_domain_model_B ON (tx_domain_model_B.uid IN (tx_domain_model_A.b_I_D)) 
WHERE 
    tx_domain_model_B.von >= ? 
ORDER BY tx_domain_model_B.von 

Результат должен нравится:

A.uid A.b_I_D B.uid B.von 
1  5,8,3 5  abc 
1  5,8,3 8  def 
1  5,8,3 3  ghi 
2  1,2  1  123 
2  1,2  2  456 
3  1  1  123 

Я использую:

$query = $this->createQuery(); 
$query->matching($query->greaterThanOrEqual('bID.von',date('U'))); 

Но потом, все дочерние объекты пусты. Я думаю, что это происходит от: http://fossies.org/dox/typo3_src-6.2.9/Typo3DbQueryParser_8php_source.html

function addUnionStatement ... 
... 

    // TODO check if there is another solution for this 
    785   $sql['keywords']['distinct'] = 'DISTINCT'; 

Так что я сделать это с $query->statement(...), но это не работает тоже.

Я хочу, чтобы все объекты из таблицы A имели A.B_I_D.von больше, чем сегодня. Таблица B (= A.B_I_D) является отношением n: 1 (A=n:B=1). Как я могу получить объект из A более одного раза? И может ли это использовать в Fluid?

Я использую Typo3 6,2

+0

Какие ошибки вы получаете с '$ query-> заявление (...)'? Я думаю, что этот путь должен работать –

ответ

0

ОК первым из всех запросов Extbase всегда даст вам полные объекты, как результат. поэтому вам нужно использовать statement, чтобы достичь цели. Второй трюк, чтобы получить результат по вашему желанию, заключается в том, что вам нужно настроить получение результата в виде массива. Нужно обусловленно Extbase пытается сопоставить заявление к объекту модели, связанной с репозиторием

вы можете изменить тип возвращаемых данных с помощью setReturnRawQueryResult: вы можете прочитать об этом здесь http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html