Передать массив в WhereIn и порядок результатов по одному и тому же массиву - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь передать массив списков post_id из таблицы post_views в таблицу posts. Что я получил, так это то, что когда я передаю массив $ newsTagRetreived в $ posts, он дает мне только первые сообщения. Текущий код выглядит следующим образом:

$newsTagRetreived = NewsTag::where('created_at', '>', 
                            \Carbon\Carbon::now()->subDay()->toDateTimeString())
                            ->orderBy('views','desc')
                            ->pluck('post_id')
                            ->implode(', ');
// dd($newsTagRetreived); 

возвращает мне точно все списки posts_id, которые мне нужны, в точном порядке, но мне нужен только 1 пост

В сообщении

$posts = Post::where('post_status', 'publish')
->where('post_type', 'post')->whereIn('ID',[$newsTagRetreived])->paginate('12');

Как мне получить все сообщения в том же порядке, что и $ newsTagRetreived в $ posts? Спасибо!

1 Ответ

1 голос
/ 12 января 2020
//...
->orderByRaw(\DB::raw("FIELD(ID, ". implode(",",$newsTagRetreived) ." )"))->paginate('12');
//...

См. http://oldblog.codebyjeff.com/blog/2015/02/laravel-quick-tip-order-by-raw

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...