【CakePHP・MySQL】CakePHP2 + MySQLでシーケンステーブルを使ってみる。

CakePHP
記事内に広告が含まれています。

tableA を使用する「処理A」で、日付や作成者IDなどを組み合わせた発注番号的なコード番号を発番する処理を作成しました。

当初は単独の機能だったので tableA の AUTO_INCREMENT を利用して発番していたのですが、機能追加で「処理B」からも『処理Aで発番していたコード番号』が必要になり、AUTO_INCREMENT が使えない状況になってしまいました。

そこで、発番用にシーケンステーブルを使うことにしましたので、その内容を備忘録してポストします。

CakePHPのバージョンは2.3.10です。

CakePHP + MySQLでシーケンス

PostgreSQLでは機能として”シーケンステーブル”があるのですが、残念ながら MySQL では無いので、似たような事をする場合はひと手間が必要となります。

シーケンステーブル作成

ということで、まずはシーケンス用のテーブルを作成。
“id”カラムのみのテーブルです。

 

Sequence モデル作成

シーケンステーブル用のモデルファイル(Sequence)を作成。

モデル内に、カウントアップ用のルーチンを組み込みます。
カウントアップし、その結果を返す仕様です。

 

AppController.php

AppController に、上記モデルのカウントアップをキックするアクションを作成します。

 

使い方

最後に、実際に発番する処理を作成。
例えば、OrdersController などで使う場合です。

 

ダンプしてみると、以下のようになります。

 

いい感じにカウントアップされていますね。

同時接続が少い処理なので、あまり何も考えずに作ってしまいましたが、
とりあえずは一度運用してみて、様子を見たいと思います。

果たして使用に耐え得るのか。

タイトルとURLをコピーしました