Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel使用其关系ID获取有说服力的数据_Php_Mysql_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Php laravel使用其关系ID获取有说服力的数据

Php laravel使用其关系ID获取有说服力的数据,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,我有三个主要的mySQL表: 使用者 标签 新闻文章 我还可以根据需要使用多对多表来连接它们 我想抓取所有与用户共享相同标签的文章,这样我就可以个性化他们的体验 (示例):假设一个用户有“特朗普”或“英国脱欧”的标签,我想抓取所有也有特朗普或英国脱欧的新闻文章 我可以获取整个数据池并进行计算,但这可能会导致不必要的服务器密集型,那么有没有一种方法可以通过雄辩的方式实现呢 同样在抓取文章之前,能够雄辩地统计用户标签,以确定用户最感兴趣的标签,或者在抓取文章之后是否需要解决方法 提前感谢。克里斯

我有三个主要的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的响应最终对我起到了作用。在与雄辩者相处了一段时间后,我找到了很多这样做的方法

我现在要为那些碰巧被卡住的人做的一件事:

通过在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
数组传递到雄辩的查询中。

您尝试了什么?什么不起作用?这个问题太模糊了,只是询问您可以在文档中找到的代码。第二部分可以通过增加新闻文章的阅读量来完成。嗨,克里斯托夫,谢谢你的回答,我在发布这个问题之前一定要浏览一下互联网,但在雄辩的文档中找不到答案,也许我错过了什么,你能给我一个链接吗?我尝试过在“where()”和“filter()”中的函数中进行查询,但据我所知,QueryBuilder一次只处理一个表,我想我的答案在别处,我只是在寻找合适的树。首先,你应该定义关系。在这个关系上,您可以添加where()等。$user->tags()->where('name','TRUMP')->firstOrFail();例如,将为用户提供所有带有trump的标签。您尝试了什么?什么不起作用?这个问题太模糊了,只是询问您可以在文档中找到的代码。第二部分可以通过增加新闻文章的阅读量来完成。嗨,克里斯托夫,谢谢你的回答,我在发布这个问题之前一定要浏览一下互联网,但在雄辩的文档中找不到答案,也许我错过了什么,你能给我一个链接吗?我尝试过在“where()”和“filter()”中的函数中进行查询,但据我所知,QueryBuilder一次只处理一个表,我想我的答案在别处,我只是在寻找合适的树。首先,你应该定义关系。在这个关系上,您可以添加where()等。$user->tags()->where('name','TRUMP')->firstOrFail();例如,将为用户提供带有trump的所有标签。