Я пытаюсь сделать запрос с массивами в Symfony2, и у меня возникают некоторые проблемы.Соответствующий массив запросов Symfony2
У меня есть два объекта с одним полем массива (я использую его как поле тега). Мое намерение состоит в том, что когда у меня есть объект Entity1, я бы запросил БД для выбора объектов Entity, имеющих хотя бы один общий тег. Кто-нибудь знает, как я могу это сделать?
Я также хотел бы узнать, можно ли отсортировать результаты как можно большего числа совпадений с низкими (т. Е. Те, у кого больше общих тегов, появляются первые).
Пример структуры сущностей:
Entity1:
- id = 1
- tags = {'Football', 'Soccer', 'Premier Leage'}
Entity2:
- id = 2
- tags = {'Football', 'Hockey', 'Tennis'}
Большое спасибо, ребята!
UPDATE:
Теперь у меня есть Entity1 и entity2 с ManyToMany к Entity под названием метки. Теперь это SQL получает мне правильный entity2 ID:
SELECT e2.entity2_id, COUNT(e2.entity2_id) AS common_tag_count
FROM entity2_tags AS e2
INNER JOIN entity1_tags AS e1 ON e2.tags_id = e1.tags_id
WHERE e1.entity1_id =3
GROUP BY e2.entity2_id
HAVING e2.entity2_id !=2
ORDER BY COUNT(e2.tags_id) DESC
Теперь я не могу объединить две таблицы в простой РЕГИСТРИРУЙТЕСЬ с DQL, потому что в DQL мы не можем использовать автоматические таблицы Doctrine (entity1_tags и entity2_tags).
Кто-нибудь знает, как я могу преобразовать код SQL в DQL?
Я уже думал о возможности использования отдельных таблиц, но и у меня такая же проблема. Не могли бы вы объяснить процедуру для использования с отдельными таблицами? – Mateu