我正在整理主页上的posts
表,以仅显示我亲自挑选的帖子。
当我为主页选择帖子时,其ID进入posts_homepage
表,该表基本上是数据透视表。我从post_id
中选择帖子的ID(posts_homepage
),然后从posts
表中获取帖子。
这很好用,但是,现在我想按特定的顺序放置它们,因此我在order_by
中添加了posts_homepage
字段。我很难弄清楚如何按照我想要的顺序获得结果,但是没有任何效果。我只是按照默认顺序来获取它们。
TABLE posts_homepage
post_id INT 10 UNSIGNED
order_by INT 10 UNSIGNED
当前查询...
$posts = Post::latest('published_at')
->whereHas('user', function ($query) {
$query->where('verified', 1);
})
->whereRaw("posts.id IN (SELECT post_id FROM posts_homepage)")
->whereRaw("posts.status = 'published'")
->paginate(30);
我尝试删除latest('published_at')
并插入->orderByRaw('ORDER BY posts_homepage.order_by ASC')
,但这没什么不同,否则我会收到一条错误消息Unknown column 'posts_homepage.order_by' in 'order clause'
我也尝试了->whereRaw("posts.id IN (SELECT post_id FROM posts_homepage ORDER BY order_by ASC)")
,但是那也不起作用。我也尝试了其他一些选项,但无法根据order_by
字段返回它们
有什么建议吗?
答案 0 :(得分:0)
如果我输入错了,请更正我,但是在这里不能简单地进行连接吗?例如:
$posts = Post::select('posts.*')
->whereHas('user', function ($query) {
$query->where('verified', 1);
})
->join('posts_homepage', 'posts.id', 'posts_homepage.post_id')
->where('posts.status', 'published')
->orderBy('posts_homepage.order_by', 'ASC')
->paginate(30);