DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人のデベロッパーズブログ > 
  3. CakePHP でストアドファンクション

加藤 正人のデベロッパーズブログ

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)

2015/01/24

PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)

 

CakePHP のモデルでテーブルのフィールド値をある一定の計算式で処理してから取り出したいことがたまにある。

単純な式ならそのまま SQL 文で書いてもよいが、式自体が複雑であったり、利用する場面がいくつもある場合には、ストアドファンクションとして保存し利用したいことがある。

たとえば、「緯度経度で与えられる2地点間の距離を計算する PHP ライブラリ」で紹介した Hubeny の公式による距離計算を SQL サーバ側で行うことができれば、クエリーに距離による条件を含めることも可能になる。

モデルに機能を追加するのであれば、ビヘイビアで定義すれば実現できそうだ。

実装例

{APP}/Plugins/LambdaTools/Model/Behavior/HubenyDistanceBehavior.php として以下の内容を配置する。({APP} は CakePHP の APP 定数で示されるフォルダ)

そして、モデル定義で以下のようにすることでそのモデルの実体テーブルを保持するデータベースにストアドファンクション hubeny_distance() が定義され、SQL 文内で利用可能になる。

あるいはオプションパラメータを指定して下記のようにする。

以上。

関連タグ: HubenyDistance  STORED_FUNCTION  MySQL5  CakePHP2