mysql - 如何使用 laravel 查询获取具有相似兴趣的用户

标签 mysql sql laravel laravel-query-builder

我有这个 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/

相关文章:

php - 重定向 URL 中缺少斜杠

javascript - 将 JavaScript 值传递给 PHP 或其他 PHP 类 (codeigniter)

mysql - 如何访问数据库表的最后一条记录以及laravel中最后一条记录的字段

Mysql:使用 "OR"匹配哪些字段

c# - Dapper dot net with mysql,Fatal 或 insert all as NULL

c# - 我应该使用一个 LINQ DataContext 还是多个?

c# - 外键引用在分配 Null 时已具有值异常 Linq to SQL

sql - Oracle SQL : Understanding the behavior of SYS_GUID() when present in an inline view?

laravel - 如何在 Vue 3 中重定向另一个路由器? (在 Laravel 8 和 vue 3 中使用 next.router)

php - 为什么 Laravel 的 App::getLocale() 方法不一致?