Posted by & filed under FuelPHP, Tech.

Another day at the office
Another day at the office / HikingArtist.com

 

ちわー! FuelPHP 使ってますか?本日は Orm のお話です。
Orm (Object Relational Mapper) をまだ理解していないけど、せっかくだから使ってみよう!と試みているのですが、純粋に BETWEEN する時にどうするんだろう?
 
てなわけで Documentation に記載されていないのでメモ。

ads

 

サンプルアプリの用意

コチラのサイト手順で作成される blog アプリを流用です。

  • 検索対象はレコード生成時間 (created_at) を BETWEEN で比較します。
  • もくろみとしては、where 句引数に SQL 生クエリをセットするのかな、と単純な発想。

 

実践!!

 

<?php
    $date  = date('Ymd');
    $query = User::find()
        ->where('created_at', 'between', \DB::expr($date.'000000'.' and '.$date.'235959'))
        ->get();

 
生成される SQL クエリ
 

SELECT COUNT(DISTINCT `t0`.`id`) AS count_result
FROM
    `posts` AS `t0`
WHERE
    `t0`.`created_at` BETWEEN 20120522000000 AND 20120522235959

 
\DB::expr しているので当然 BWETEEN 部分はエスケープなし。

クエリとしては成立しているのだけれど、もっとうまいこと出来ないものかな?

と、なんとなく kohanaのやり方を真似してみました。

 

<?php
    $date  = date('Ymd');
    $query = User::find()
        ->where('created_at', 'between', array($date.'000000', $date.'235959'))
        ->get();

 
生成される SQLクエリ
 

SELECT COUNT(DISTINCT `t0`.`id`) AS count_result
FROM
    `posts` AS `t0`
WHERE
    `t0`.`created_at` BETWEEN '20120522000000' AND '20120522235959'

 
となりました。

 

いじょう、メモ。

Related Posts Plugin for WordPress, Blogger...

One Response to “FuelPHPのOrmでBETWEENを使う簡単な方法”