我有这个 sql 查询来获取至少有 3 个共同兴趣的用户。
$get_similar = $db->query(sprintf('SELECT ui.user_id, COUNT( * ) AS common_interests
FROM users_interests ui
WHERE ui.interests_id
IN (
SELECT ui2.interests_id
FROM users_interests ui2
WHERE ui2.user_id = %s
)
AND ui.user_id <> %s
GROUP BY ui.user_id
HAVING common_interests >2
', secure($this->_data['user_id']), secure($this->_data['user_id']) ));
如何将上面的sql查询转换为laravel eloquent查询?
最佳答案
以下查询即可解决问题
$user_interests = User::find($user_id)->interests->pluck('id')->toArray();
$get_similar = DB::table('users_interests')
->select(DB::raw('count(*) as common_interests, user_id'))
->whereIn('interest_id', $user_interests)
->where('user_id','<>', 3)
->groupBy('user_id')
->havingRaw('COUNT(*) > 2')
->get();
关于mysql - 如何使用 laravel 查询获取具有相似兴趣的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45026035/