Я курирую свою таблицу posts
на главной странице, чтобы показывать только те сообщения, которые я выбрал.
Когда я выбираю сообщение для домашней страницы, его идентификатор попадает в таблицу posts_homepage
, которая в основном является сводной таблицей. Я выбираю идентификатор сообщения (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
Есть предложения?