我posts
在主页上整理我的表格,只显示我精心挑选的帖子。
当我为主页选择一个帖子时,它的 ID 进入一个posts_homepage
表格,它基本上是一个数据透视表。我从中选择帖子的 id ( post_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
字段返回它们
有什么建议么?
如果我错了,请纠正我,但简单的 join 不能在这里工作吗?例如:
$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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句