Кажется, что у Docrine нет хорошего способа использовать "DISTINCT ON".Также я не нашел способа использования «DISTINCT» или -> Different (), который бы соответствовал моим потребностям (я получил много дурацких вещей, когда Doctrine строит SQL-запрос).ОТЛИЧАЙТЕСЬ от вещей, используя другой подход.Вот SQL-запрос, который я сейчас использую:
SELECT *
FROM people
WHERE id IN (SELECT min(id)
FROM people
WHERE company
SIMILAR TO '%companyA%|%companyB%|%...')
GROUP BY company;
Синтаксис Doctrine, который я использовал для генерирования его из Symfony, более или менее:
$query = Doctrine_Query::create()->from('Company c')
->select('.....');
$innerquery = Doctrine_Query::create()->from('Company ic')
->select('MIN(ic.id) AS id'); // important the "AS id"
$innerquery = (... stuff to get the company A, B, C in an andWhere() ...)
$innerquery->groupBy('ic.company');
$query->Where('c.id IN ('.$innerquery.')');