CakePHP3で年齢検索したいんだけど
って質問されたわけです。
えーっとですね。別に難しいことではないと思うんですがね・・・。
まぁ、クエーリービルダー使ってやりたい、ってことでどうやってやればいいのかね、と。
これねぇ。
CakePHPだと思うから変なこと考えちゃうのかも。
結局は、MySQL(MariaDB?)を使ってるんだったら、
そっちのお作法にあわせなきゃ。
ってことで、
CakePHP3+MySQLでの年齢検索の方法です。
DBとしては、
usersテーブルに、birthdayっていうdateのカラムがあるとします。
CREATE TABLE `users` (
`user_id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`birthday` DATE NOT NULL COMMENT '生年月日',
PRIMARY KEY (`user_id`)
) ENGINE=INNODB EFAULT CHARSET=utf8;
24歳以上を検索したければ、まずは普通に、SQL書いたとしたらどんなSQLになるか、なんですが。
select * from users where timestampdiff(YEAR,birthday,now())> 24);
とか書けるわけ。
なので、
それをそのままクエーリービルダーでも書いてやればいいんですよね。
こんな感じ?
$query = $this->Users->find()
->where(['TIMESTAMPDIFF(YEAR, birthday, now()) > ' => 24]);
はい、簡単ですね。