我有两个表:posts
和votes
,我想在主页上只显示一个帖子,然后以随机顺序显示它们。但我想排除已经投票的帖子。所以我想只在未投票的帖子之间循环。我正在使用Laravel 5.4
posts
表的结构:
ID
USER_ID
...
votes
表的结构:
ID
USER_ID
POST_ID
...
我只需要一个查询来排除帖子,我已经写过的所有其他内容。
由于
答案 0 :(得分:2)
假设您的votes
模型中存在Post
关系(我假设您使用了Eloquent),您可以使用:
$posts = Post::doesntHave('votes')->get();
获取没有任何选票的帖子。
显然,在这里运行get()
可能不是一个好主意,因为你会得到所有没有投票的帖子 - 以及万万有10万个帖子符合这个标准的情况呢?您可能应该只获取其中一些,然后选择一个随机,例如:
$posts = Post::doesntHave('votes')->latest()->take(100)->get();