データ取得に困っています。やりたいことが約40件のデータを最新順に取得して画面には5件取得したら、ページネーションで次のページを飛ばす処理をがやりたいです
しかし、私のは、40件の中の古い5件を取得して、その古い5件を最新順にしか取得できず、ページネーションをすると、日付がずれてしまい、うまくデータが取得できません。
もっと詳しく言うとデータは今年の1月から10月までのデータがあります。実現したいことは10月からの最新データが取得したくて現在私のは2月から1月の最新順にしかとれません.
index.blade.php $blogs = $tag->blogs()->action()->sort([ 'direction' => 'DESC', 'sort' => 'arrange' ])->take(5)->get(); <div class="visual_ forcms_block SecA"> <div class="body"> <div class="ArticleList"> <ul class="list"> {{-- {{dd($blogs)}} --}} @foreach($blogs->splice(1)->sortByDesc('release_date') as $blog) <li class="li"> <a href="/bridal_journal/{{$tag->slug}}/detail/{{$blog->id}}" style="height: 144px;"> <span class="date">{{$blog->release_date}}</span> <h3 class="hn">{{$blog->title}}</h3> <p class="link"><span>記事を読む</span></p></a> </li> @endforeach
blog.php public function scopeSort($query, $data = []) { foreach ($data as $key => $val) { //field filter if (in_array($key, $this->filterFields)) $query->where($key, $val); //field sort if ($key === 'sort') { if(!empty($data['direction'])){ if (in_array($data['sort'], $this->sortFields)) $query->orderBy($data['sort'], $data['direction']); } } } return $query;
補足でいいますと、最初の1件は古いデータを取得し、2件目以降は最新順に取得する処理となります。
試したことは
task(5)の中身40に変えると40件中の最新が出てくるのですが、40件もデータが出力されてしまい、うまくいきません。
またsortByDescを使うと、40件の中の古い5件を取得して、その古い5件を最新順にしか取得できずに困っています。
足りない情報がありましたら、ぜひまた、お知らせして下さい。ご回答の方をよろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/27 05:43