сегодня у меня интересная задача - реализовать поиск по БД по некоторым группам и отсортировать по наиболее релевантным критериям
[list] [*]У нас есть 2 сущности (Пользователь и интересы) в Symfony с отношением ManyToMany [*] Нам нужно создать запрос для поиска пользователей с наиболее схожими интересами например:
у пользователя1 есть интересы [1,2,3,4,5]
у пользователя2 есть интересы [1,2,4,5,7]
у пользователя3 есть интересы [3,5] [/list]
мы пытаемся найти пользователя по интересам [2,6,7] и результат должен быть:
[code][user2, user1, user0]
user2 - 2 similar interests
user1 - 1 similar interests
user3 - 0 [/code]
Code example:
[code]class User { // ...
/** * Many Users have Many Interests. * @ManyToMany(targetEntity="Interest") * @JoinTable(name="users_interests", * joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@JoinColumn(name="interest_id", referencedColumnName="id")} * ) */ private $interests; ... [/code]
I have no idea how to organize it nicely, can somebody help me? Thanks!