【问题标题】:Find suggestions based on interests using Laravel and Eloquent使用 Laravel 和 Eloquent 根据兴趣查找建议
【发布时间】:2015-01-29 10:14:04
【问题描述】:

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

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

【问题讨论】:

  • 生成有意义和好的推荐是一项艰巨的任务。您基本上是在要求我们为您完成所有工作。如果遇到问题,您自己尝试并发布问题如何。
  • 不是真的,我问的是一个纯粹的技术 API 问题。我不希望你开始向我扔推荐算法。
  • 好的。所以你只想要所有与用户相关的类型或年份或运行时间相匹配的电影?
  • 几乎 :) 我想要电影的每个属性(类型、年份、运行时间)与用户至少有一个关系。这是一个糟糕的例子(因为显然一部电影只有一年),但是 fx.对于同时具有“动作”和“惊悚”类型的电影,用户必须至少喜欢动作或惊悚片,或两者兼而有之。

标签: php mysql laravel recommendation-engine


【解决方案1】:

您正在寻找的可以通过使用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(超过其他三个关系)过滤电影

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 2021-04-25
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多