プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
FuelPHP1.6、ORMモデルのfind()を理解する。
ORMモデルのfind()をあれやこれやと動かしてみました。
上段がFuelPHP上のコード、下段が実際に発行されるSQLですφ(--)

■ 最初の1件を取得
$result = Model_Test02::find('first');
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` ORDER BY `t0`.`pk_id` ASC LIMIT 1

■ 最後の1件を取得
$result = Model_Test02::find('last');
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` ORDER BY `t0`.`pk_id` DESC LIMIT 1

■ 全件取得
$result = Model_Test02::find('all');
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0`

■ 件数取得
$result = Model_Test02::find()->count();
var_dump($result);
SELECT COUNT(DISTINCT `t0`.`pk_id`) AS count_result FROM `tbl_test01` AS `t0`

■ プライマリキー指定で取得
$result = Model_Test02::find(5);
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`pk_id` = 5 LIMIT 1

■ 検索条件を指定
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'あああ'),
    ),

));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` = 'あああ'

■ 検索条件を指定(and条件)
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'あああ'),
        array('column_varchar02', 'いいい'),
    ),
));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` = 'あああ' AND `t0`.`column_varchar02` = 'いいい'

■ 検索条件を指定(or条件)
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'あああ'),
        'or' => array('column_varchar01', 'あああ2'),
    ),
));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` = 'あああ' OR `t0`.`column_varchar01` = 'あああ2'

■ 検索条件を指定(複数条件)
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'あああ'),
        array(
            array('column_varchar02', 'いいい'),
            'or' => array('column_varchar02', 'いいい2')
        ),
    ),

));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` = 'あああ' AND (`t0`.`column_varchar02` = 'いいい' OR `t0`.`column_varchar02` = 'いいい2')

■ 検索条件を指定(複数のor条件)
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'あああ'),
        'or' => array(
            array('column_varchar01', 'あああ2'),
            'or' => array('column_varchar01', 'あああ3')
        ),
    ),

));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` = 'あああ' OR ((`t0`.`column_varchar01` = 'あああ2' OR `t0`.`column_varchar01` = 'あああ3'))

■ 検索条件を指定(like検索)
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'like', 'あああ%'),
    ),
));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` LIKE 'あああ%'

■ 検索条件を指定(in句)
$result = Model_Test02::find('all', array(
    'where' => array(
        array('column_varchar01', 'in', array('あああ', 'あああ2')),
    ),
));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` WHERE `t0`.`column_varchar01` IN ('あああ', 'あああ2')

■ order by句を指定
$result = Model_Test02::find('all', array(
    'order_by' => array(
        'column_varchar01',
        'column_varchar02' => 'DESC'
    ),

));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` ORDER BY `t0`.`column_varchar01` ASC, `t0`.`column_varchar02` DESC

■ limit句を指定
$result = Model_Test02::find('all', array(
    'limit' => 5,
));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` LIMIT 5

■ offset句を指定
$result = Model_Test02::find('all', array(
    'limit' => 5,
    'offset' => 2,
));
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` LIMIT 5 OFFSET 2

検索条件の作り方はクエリビルダと似た感じですかね。
てかむしろCakePHPに似た感じかな(--?
CakePHPとクエリビルダを触ったことがあれば直感的に使えると思います。

find()にはメソッドチェーンを使って

$result = Model_Test02::find()->order_by('pk_id')->limit(10)->get();
var_dump($result);
SELECT (取得項目) FROM `tbl_test01` AS `t0` ORDER BY `t0`.`pk_id` ASC LIMIT 10

のような書き方もあるみたいですけどね。
個人的には第二引数で一発指定の方が好みです。

完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:FuelPHP  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事