EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

Laravelサイト構築.46 投稿カテゴリ一覧とCollection

だいぶ空いてしまった。

tenomeuonome.hateblo.jp

ちまちまと作業してはいるのですが。

 

■カテゴリの一覧表示

前回までに、投稿サイトでカテゴリをクリックしたらそのカテゴリに属する投稿の一覧を表示する対応を行った。

 

次に、「カテゴリ一覧」のリンクをクリックしたら、カテゴリの一覧を表示したい。

カテゴリに何も指定しない場合にカテゴリ一覧を表示すればよいかとやってみたが、

例えば <a href="/categories/" /> では画面が真っ白になってしまいうまくいかない。

回避策として、< href="/categories/all" />と固定文言をパラメータで受け取った場合は記事一覧でなくカテゴリ一覧を表示するものとする。

Controllerを以下のように修正した。

 

if($category == 'all'){
  // カテゴリ一覧
  // 検索フォームの入力値でLIKE検索
  $cate_list =  Thread::pluck('category');
  $categories = collect();

  foreach ( $cate_list as $cate ){

    $arr_cate = preg_split("/\s+/", mb_convert_kana($cate, 's'));

    foreach( $arr_cate as $cate1 ){
    
      if( !$categories->contains($cate1) ){
        $categories->add($cate1);
        info('cate-add', ['category' => $cate1]);
      }
    }
  }
}

 

pluckは、テーブルから指定した列の一覧を取得する。

 

カテゴリは「テスト ラーメン」のようにスペースで区切られているので、

preg_split("/\s+/", mb_convert_kana($cate, 's'))で分割する。

 

分割した文字列1つ1つについて、Collectionに存在しなければ追加する。

存在確認はcontains関数。

追加はadd関数。

 

これだけのことなんだけど数時間ハマってしまった。

 

次は管理者権限の対応。

 

 

つづく