2015-09-10 3 views
0

Entity TestCase имеет 3 многосолных ассоциаций «группы», «контексты» и «версии».findBy with manyToMany assosiation

Я пытаюсь найти объекты, вызывая метод:

$current_condition = array('groups' => $case_groups ,'contexts' => $case_contexts , 'versions' => $case_versions); 

$api->findBy(TestCase::class, $current_condition); 

Получил ошибку:

Uncaught exception 'PDOException' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "test_cases_group" 
LINE 1: ...reated AS time_created_4 FROM test_cases t0 WHERE test_cases... 

SQL Доктрине в:

SELECT t0.id AS id_1, t0.name AS name_2, t0.description AS description_3, t0.time_created AS time_created_4 
FROM test_cases t0 
WHERE test_cases_group.group_id IN (?) AND test_cases_contexts.context_id IN (?) AND test_cases_versions.version_id IN (?) 

Похоже, что доктрина Безразлично» t do JOINS в своем запросе sql

Могу ли я сделать такое условие в findBy? Должен ли я использовать построитель запросов вместо этого?

ответ

0

Вы должны написать запрос самостоятельно (используя построитель запросов) для этого типа критериев. Doctrine не поддерживает сложные критерии, подобные этому в методе findBy().

+0

Да, я должен расширить базовый репозиторий и написать свои собственные сложные запросы. Спасибо. –