使用 Laravel 和 Eloquent 根据兴趣查找建议

Find suggestions based on interests using Laravel and Eloquent

我正在构建一个小型网站,用户可以在其中根据他们对某些属性(例如流派、年份或 运行 时间)的偏好接收电影推荐。我的数据库如下所示(箭头表示多对多关系):

假设图片中的每个实体都有一个模型,我如何找到应该向用户推荐哪些电影?

您正在寻找的可以通过使用 whereHas:

来实现
Movies::whereHas('genres.users', function($q) use ($userId){
   $q->where('users.id', $userId);
})->whereHas('years.users', function($q) use ($userId){
   $q->where('users.id', $userId);
})->whereHas('runtimes.users', function($q) use ($userId){
   $q->where('users.id', $userId);
})->get();

这基本上通过嵌套关系过滤电影 users(超过其他三个关系)