php - laravel 使用其关系 ID 获取 Eloquent 数据

标签 php mysql laravel laravel-5 eloquent

我有三个主要的 mySQL 表:

  • 用户
  • 标签
  • 新闻文章

我还有很多表可以根据需要连接它们。

我想抓取与用户共享相同标签的所有文章,以便个性化他们的体验。

(示例):假设用户有“Trump”或“Brexit”标签,我想获取所有也有 Trump 或 Brexit 的新闻文章。

我可以抓取整个数据池并进行计算,但这可能会导致不必要的服务器密集型,那么有没有一种方法可以通过 Eloquent 来实现?

此外 Eloquent 是否能够统计用户标签以确定用户在抓取文章之前最感兴趣的标签或者之后是否需要解决方法?

提前致谢。

最佳答案

Christophvh 的回复最终对我有用。在使用 Eloquent 一段时间后,我发现了更多的方法。

对于碰巧被卡住的任何人,我现在都会采用一种方法:

通过在我的 UserArticle 模型中创建一个 tags 方法来返回所有相关标签,然后我可以执行以下操作。

$userTags = $user->tags()->pluck('name')->get()->toArray();

$articles = Article::whereHas('tags', function($tag) use ($userTags) {
    $tag->where('name', $userTags)->get();
})->get();

上面的代码应该:

  • 只获取属于某个用户的所有标签的名称字段,并将它们存储在一个数组中。
  • 抓取所有相关标签名称字段包含 $userTags 变量中的任何标签的文章

要创建优先级标签列表,我只需要运行 array_count_values($userTags) 并按返回值对其进行排序,然后传递新排序的 $userTags 数组进入 Eloquent 查询。

关于php - laravel 使用其关系 ID 获取 Eloquent 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247630/

相关文章:

php - Laravel 搜索关系

php - 从 Laravel 中的 .env 返回数据类型

php - 像 stackoverflow 这样的搜索标签?

javascript - 如何使用jquery和php动态更新分数而不刷新页面

php - FPDF,从 mysql 表生成选定值的 pdf

php - 按最新(最近)相关模型排序 [Laravel]

php - PHP中的变量持久化

php - WordPress 菜单帖子特色图片

Mysql 在 CASE 中使用 COUNT

PHP登录脚本问题