Laravel不包括投票的帖子

时间:2017-03-24 19:51:33

标签: php mysql laravel-5 eloquent laravel-5.4

我有两个表:postsvotes,我想在主页上只显示一个帖子,然后以随机顺序显示它们。但我想排除已经投票的帖子。所以我想只在未投票的帖子之间循环。我正在使用Laravel 5.4

posts表的结构:

  • ID

  • USER_ID

  • ...

votes表的结构:

  • ID

  • USER_ID

  • POST_ID

  • ...

我只需要一个查询来排除帖子,我已经写过的所有其他内容。

由于

1 个答案:

答案 0 :(得分:2)

假设您的votes模型中存在Post关系(我假设您使用了Eloquent),您可以使用:

$posts = Post::doesntHave('votes')->get();

获取没有任何选票的帖子。

显然,在这里运行get()可能不是一个好主意,因为你会得到所有没有投票的帖子 - 以及万万有10万个帖子符合这个标准的情况呢?您可能应该只获取其中一些,然后选择一个随机,例如:

$posts = Post::doesntHave('votes')->latest()->take(100)->get();