Laravel 5.7 DB::Select аргумент в виде массива?
Это НЕ В FOREACH$task = DB::table('tasks')->whereIn('category', $categorys->pluck('name'))->orderBy('id', 'desc')->paginate(15);
P.S если шо правльно categories а не categorys 
Как-то так, правильность сейчас проверить не могу, но подход должен быть понятен
в цикле идет запись в переменную, а не в массив, почему он должен показывать не последний элемент?
Пишите это в массив, а потом уже в whereIn  подставляйте.