Laravelでのページネーションの実装について
Q&A
Closed
解決したいこと
laravelで画像投稿サイトを作成しているのですが、いいねを付けた投稿を見られる「いいね一覧ページ」にてページネーションの実装をする方法が分からず困っています。
発生している問題・エラー
Method Illuminate\Database\Eloquent\Collection::latest does not exist.
該当するソースコード
LikeController.php(いいね一覧のコントローラーが書かれた部分)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LikeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
// いいね一覧
public function index()
{
$like_posts = \Auth::user()->likePosts()->latest()->paginate(5);
return view('likes.index',[
'title' => 'いいね一覧',
'like_posts' => $like_posts,
]);
}
// いいね追加処理
public function store(Request $request)
{
//
}
// いいね削除処理
public function destroy($id)
{
//
}
}
index.blade.php(いいね一覧ページのビュー)
@extends('layouts.logged_in')
@section('content')
<h1>{{ $title }}</h1>
<ul class="posts">
@forelse($like_posts as $post)
<li class="post like_post">
<div class="post_content">
<div class="post_body">
<div class="post_body_heading">
投稿者:{{ $post->user->name }}
({{ $post->created_at }})
</div>
<div class="post_body_main">
<div class="post_body_main_img">
@if($post->image !== '')
<img src="{{ asset('storage/' . $post->image) }}">
@else
<img src="{{ asset('images/no_image.png') }}">
@endif
<a href="{{ route('posts.edit_image', $post) }}">画像を変更</a>
</div>
<div class="post_body_main_comment">
{{ $post->comment }}
</div>
</div>
<div class="post_body_footer">
[<a href="{{ route('posts.edit', $post) }}">編集</a>]
<form class="delete" method="post" action="{{ route('posts.destroy', $post) }}">
@csrf
@method('DELETE')
<input type="submit" value="削除">
</form>
</div>
</div>
<div class="post_comments">
<span class="post_comments_header">コメント</span>
<ul class="post_comments_body">
@forelse($post->comments as $comment)
<li>{{ $comment->user->name }}: {{ $comment->body }}</li>
@empty
<li>コメントはありません。</li>
@endforelse
</ul>
<form method="post" action="{{ route('comments.store') }}">
@csrf
<input type="hidden" name="post_id" value="{{ $post->id }}">
<label>
<input type="text" name="body">
</label>
<input type="submit" value="送信">
</form>
</div>
</div>
</li>
@empty
<li>書き込みはありません。</li>
@endforelse
</ul>
{{ $like_posts->links() }}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
/* global $ */
$('.like_button').each(function(){
$(this).on('click', function(){
$(this).next().submit();
});
});
</script>
@endsection
自分で試したこと
書いたコードのスペルミスなどのチェック
0