シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP2]Modelの保存時に日別(週別・月別)の通し番号を追加する

medium_2307078403

たとえばデータベースのお客様テーブルに「日別の通し番号を追加したい」なんてこと、よくありますよね。

CakePHPならbeforeSaveを使えば簡単です。

Visitor.php

// 省略
public function beforeSave() {
	// idが無ければ新規追加
	if (empty($this->data['Visitor']['id']) && empty($this->data['id'])) {
		// no自動設定
		$maxVisitorNo = $this->find('first', array(
			'fields' => array(
				'MAX(no) as max_no',
			),
			// ↓ここがキモ
			'conditions' => array(
				'shop_id' => SHOP_ID,	// 日付だけじゃなく店舗ごととかもできますね
				'record_date' => date('Y-m-d'),	// 当日の日付でチェック
				// 1ヶ月ごとなら下記でもOK。応用すれば週でも年でもできますね。
				// 'record_date BETWEEN' => array(date('Y-m-1'), date('Y-m-t')),
			),
		));
		$nextVisitorNo = $maxVisitorNo[0]['max_no'] + 1;
		if (!empty($this->data['Visitor'])) {
			$this->data['Visitor']['no'] = $nextVisitorNo;
		} else {
			$this->data['no'] = $nextVisitorNo;
		}
	}
	return true;

}

φ(..)メモメモ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする