сегодня у меня интересная задача - реализовать поиск по БД по некоторым группам и отсортировать по наиболее релевантным критериям
- У нас есть 2 сущности (Пользователь и интересы) в Symfony с отношением ManyToMany
-
Нам нужно создать запрос для поиска пользователей с наиболее схожими интересами
например:
у пользователя1 есть интересы [1,2,3,4,5]
у пользователя2 есть интересы [1,2,4,5,7]
у пользователя3 есть интересы [3,5]
Код: Выделить всё
[user2, user1, user0]
user2 - 2 similar interests
user1 - 1 similar interests
user3 - 0
Код: Выделить всё
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;
...
Thanks!
Источник: https://stackoverflow.com/questions/473 ... -interests