Php laravel使用其关系ID获取有说服力的数据
我有三个主要的mySQL表:Php laravel使用其关系ID获取有说服力的数据,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,我有三个主要的mySQL表: 使用者 标签 新闻文章 我还可以根据需要使用多对多表来连接它们 我想抓取所有与用户共享相同标签的文章,这样我就可以个性化他们的体验 (示例):假设一个用户有“特朗普”或“英国脱欧”的标签,我想抓取所有也有特朗普或英国脱欧的新闻文章 我可以获取整个数据池并进行计算,但这可能会导致不必要的服务器密集型,那么有没有一种方法可以通过雄辩的方式实现呢 同样在抓取文章之前,能够雄辩地统计用户标签,以确定用户最感兴趣的标签,或者在抓取文章之后是否需要解决方法 提前感谢。克里斯
- 使用者
- 标签
- 新闻文章
提前感谢。克里斯托夫的回答最终对我起了作用。在与雄辩者相处了一段时间后,我找到了很多这样做的方法 我现在要为那些碰巧被卡住的人做的一件事: 通过在my
User
和Article
模型中创建tags
方法以返回所有相关标记,我可以执行以下操作
$userTags = $user->tags()->pluck('name')->get()->toArray();
$articles = Article::whereHas('tags', function($tag) use ($userTags) {
$tag->where('name', $userTags)->get();
})->get();
上述代码应:
- 仅获取属于用户的所有标记的名称字段,并将它们存储在数组中
- 抓取其相关标记名称字段包含$userTags变量中任何标记的所有文章
要创建优先级标签列表,我只需要运行
array\u count\u values($userTags)
并根据返回的值对其排序,然后将新排序的$userTags
数组传递到雄辩的查询中。Christophvh的响应最终对我起到了作用。在与雄辩者相处了一段时间后,我找到了很多这样做的方法
我现在要为那些碰巧被卡住的人做的一件事:
通过在myUser
和Article
模型中创建tags
方法以返回所有相关标记,我可以执行以下操作
$userTags = $user->tags()->pluck('name')->get()->toArray();
$articles = Article::whereHas('tags', function($tag) use ($userTags) {
$tag->where('name', $userTags)->get();
})->get();
上述代码应:
- 仅获取属于用户的所有标记的名称字段,并将它们存储在数组中
- 抓取其相关标记名称字段包含$userTags变量中任何标记的所有文章
要创建优先级标签列表,我只需要运行
array\u count\u values($userTags)
并根据返回的值对其排序,然后将新排序的$userTags
数组传递到雄辩的查询中。您尝试了什么?什么不起作用?这个问题太模糊了,只是询问您可以在文档中找到的代码。第二部分可以通过增加新闻文章的阅读量来完成。嗨,克里斯托夫,谢谢你的回答,我在发布这个问题之前一定要浏览一下互联网,但在雄辩的文档中找不到答案,也许我错过了什么,你能给我一个链接吗?我尝试过在“where()”和“filter()”中的函数中进行查询,但据我所知,QueryBuilder一次只处理一个表,我想我的答案在别处,我只是在寻找合适的树。首先,你应该定义关系。在这个关系上,您可以添加where()等。$user->tags()->where('name','TRUMP')->firstOrFail();例如,将为用户提供所有带有trump的标签。您尝试了什么?什么不起作用?这个问题太模糊了,只是询问您可以在文档中找到的代码。第二部分可以通过增加新闻文章的阅读量来完成。嗨,克里斯托夫,谢谢你的回答,我在发布这个问题之前一定要浏览一下互联网,但在雄辩的文档中找不到答案,也许我错过了什么,你能给我一个链接吗?我尝试过在“where()”和“filter()”中的函数中进行查询,但据我所知,QueryBuilder一次只处理一个表,我想我的答案在别处,我只是在寻找合适的树。首先,你应该定义关系。在这个关系上,您可以添加where()等。$user->tags()->where('name','TRUMP')->firstOrFail();例如,将为用户提供带有trump的所有标签。