k01ken’s b10g

He110 W0r1d!

CakePHP3でformatResults()を用いて後処理をする

開発環境は、Windows 10 Pro(64bit) + PHP 7.2.12 + CakePHP 3.7.9。

findメソッドを用いて、containなどで関連もつなげて作り終わったクエリーに対して、formatResults()を用います。今回は、受け取った値に応じて、違う値を、新たに生成したカラムに入れたいと思います。

<?php
      /* $query変数に、クエリーを作り終わった後に・・・ */
      $query->formatResults(function($results) use($flug){
        return $results->map(function ($row) use($flug){
          $row['flug'] = 0;
          if($flug === 'black'){
            $row['flug'] = 1;
          }
          return $row;
        });
      });
?>

これによって、$flugがblackであれば、新たに生成したカラムflugの値は1、そうでなければ、0が入るようになっています。


■参考リンク
https://book.cakephp.org/3.0/ja/orm/query-builder.html#format-results