@Karpkarp

Как решить проблему с пагинацией и датой Laravel?

Здравствуйте. Столкнулся с проблемой отображения в шаблоне поля created_at, мне нужно было вывести дату создания поста. Дата отображалась, но постоянно одинаковая была.

Такой контроллер
public function index()
    {
        $posts = Blog::join('users', 'author_id','=', 'users.id')
            ->orderBy('blogs.created_at', 'desc')
            ->simplePaginate(15);

        return view('posts.blog', compact('posts'));
    }

В шаблоне к полю обращался так {{$post->created_at->diffForHumans()}}

Заметил косяк с датой и изменил конроллер
public function index()
    {
        $blogs = Blog::join('users', 'author_id','=', 'users.id')
            ->orderBy('blogs.created_at', 'desc')
            ->simplePaginate(15);

        return view('posts.blog', compact('blogs'));
    }

Да, просто $posts заменил на $blogs
В итоге проблема с датой решилась, но при добавлении пагинации {{ $blogs->links() }} вылетает ошибка
Method Illuminate\Database\Eloquent\Collection::links does not exist. (View: W:\domains\blog\resources\views\posts\blog.blade.php)
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 3
Alex_Wells
@Alex_Wells
PHP/Kotlin
А ты посмотри свой запрос, мб заметишь что он вытягивает кучу полей с одинаковыми названиями....
Ответ написан
Комментировать
@Karpkarp Автор вопроса
Решил так, вроде работает, но как то не красиво получается
public function index()
    {
        $blogs = Blog::join('users', 'author_id','=', 'users.id')
            ->orderBy('blogs.created_at', 'desc')
            ->get();

        $paginateBlog = Blog::paginate(10);

        return view('posts.blog', compact('blogs', 'paginateBlog'));
    }
Ответ написан
Комментировать
AmdY
@AmdY
PHP и прочие вебштучки
Да прочитайте вы документацию, найдёте как Eloquent работает со связями, тогда код будет в одну строку
return view('posts.blog', 
[
'blogs' => Blog::with('user')->orderBy('created_at')->paginate(10)
]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы