Как осортировать посты юзера по дате создания?
Вам нужно получить посты одного юзера
$user = User::find($id);
$posts = $user->posts; // Если есть связь от одного пользователя.

return response()->json($posts->sortByDesc('created_at')); // и вызвать сортировку коллекции.

Плюс нужно понимать различия:
1) orderBy это сортировка в QueryBuilder, в SQL грубо говоря Прочесть тут. Поэтому в вашем случае писало что нет такого метода ибо у коллекции вызывали его.

как вариант с orderBy 
$posts = Post::where('user_id', '=', $user_id)
->orderBy('created_at', 'desc')
->get();

return response()->json($posts);

2) А sortBy / sortByDesc сортируют готовую коллекцию Почитать тут (пример выше).
$user->posts - коллекция
$user->posts() - запрос
запрос с сортировкой:
$user->posts()
     ->latest()
     ->get();