2013.
06.
20
15:17:24
FuelPHPではModel_Crudを継承したモデルを作成すると
あらかじめCRUD用のメソッドを含んだモデルになるのだそうな。
そこら辺をちょいと見ていこうかな、というのが今回のテーマです。
取りあえず前準備φ(--)
■テスト用のテーブル
■Model_Crudを継承したモデル
それではまず「find_all()」を使って全データを取得してみるφ(--)
結果φ(--)
次に「find_by_pk()」を使ってプライマリキー指定でデータを取得してみるφ(--)
結果φ(--)
最後に「find()」を使って任意の条件でデータを取得してみるφ(--)
結果φ(--)
他に「find_by()」や「find_one_by()」等があるようですが、
1項目しか条件に指定できないようなので使う機会は多くないと思います。
ぶっちゃけ「find()」で代用できるし。
と言う訳でModel_Crudでのデータ取得、完了\(--)/
あらかじめCRUD用のメソッドを含んだモデルになるのだそうな。
そこら辺をちょいと見ていこうかな、というのが今回のテーマです。
取りあえず前準備φ(--)
■テスト用のテーブル
CREATE TABLE IF NOT EXISTS `tbl_test01` (
`pk_id` int(10) NOT NULL AUTO_INCREMENT,
`column_varchar01` varchar(255) DEFAULT NULL,
`column_int02` int(10) DEFAULT NULL,
`column_varchar02` varchar(255) DEFAULT NULL,
PRIMARY KEY (`pk_id`),
KEY `pk_id` (`pk_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
`pk_id` int(10) NOT NULL AUTO_INCREMENT,
`column_varchar01` varchar(255) DEFAULT NULL,
`column_int02` int(10) DEFAULT NULL,
`column_varchar02` varchar(255) DEFAULT NULL,
PRIMARY KEY (`pk_id`),
KEY `pk_id` (`pk_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
■Model_Crudを継承したモデル
<?php
class Model_Test01 extends Model_Crud
{
//使用するtable
protected static $_table_name = "tbl_test01";
//プライマリキー
protected static $_primary_key = "pk_id";
//データ検証用のルール
protected static $_rules = array(
'column_varchar01' => 'required'
);
//値未設定時のデフォルト値
protected static $_defaults = array(
'column_int02' => 100
);
}
class Model_Test01 extends Model_Crud
{
//使用するtable
protected static $_table_name = "tbl_test01";
//プライマリキー
protected static $_primary_key = "pk_id";
//データ検証用のルール
protected static $_rules = array(
'column_varchar01' => 'required'
);
//値未設定時のデフォルト値
protected static $_defaults = array(
'column_int02' => 100
);
}
それではまず「find_all()」を使って全データを取得してみるφ(--)
public function action_select()
{
//データ取得
$mt = Model_Test01::find_all();
//表示
var_dump($mt);
}
{
//データ取得
$mt = Model_Test01::find_all();
//表示
var_dump($mt);
}
結果φ(--)
array(3) {
[0]=>
object(Model_Test01)#24 (8) {
(中略)
["pk_id"]=>
string(1) "1"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
[1]=>
object(Model_Test01)#25 (8) {
(中略)
["pk_id"]=>
string(1) "2"
["column_varchar01"]=>
string(9) "おおお"
["column_int02"]=>
string(2) "11"
["column_varchar02"]=>
string(9) "かかか"
}
[2]=>
object(Model_Test01)#26 (8) {
(中略)
["pk_id"]=>
string(1) "3"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
}
[0]=>
object(Model_Test01)#24 (8) {
(中略)
["pk_id"]=>
string(1) "1"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
[1]=>
object(Model_Test01)#25 (8) {
(中略)
["pk_id"]=>
string(1) "2"
["column_varchar01"]=>
string(9) "おおお"
["column_int02"]=>
string(2) "11"
["column_varchar02"]=>
string(9) "かかか"
}
[2]=>
object(Model_Test01)#26 (8) {
(中略)
["pk_id"]=>
string(1) "3"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
}
次に「find_by_pk()」を使ってプライマリキー指定でデータを取得してみるφ(--)
public function action_select2()
{
//データ取得
$mt = Model_Test01::find_by_pk(2);
//表示
var_dump($mt);
}
{
//データ取得
$mt = Model_Test01::find_by_pk(2);
//表示
var_dump($mt);
}
結果φ(--)
object(Model_Test01)#24 (8) {
(中略)
["pk_id"]=>
string(1) "2"
["column_varchar01"]=>
string(9) "おおお"
["column_int02"]=>
string(2) "11"
["column_varchar02"]=>
string(9) "かかか"
}
(中略)
["pk_id"]=>
string(1) "2"
["column_varchar01"]=>
string(9) "おおお"
["column_int02"]=>
string(2) "11"
["column_varchar02"]=>
string(9) "かかか"
}
最後に「find()」を使って任意の条件でデータを取得してみるφ(--)
public function action_select3()
{
//条件作成
$condition = array(
'where' => array(
'column_int02' => 10,
'column_varchar02' => "いいい"
),
);
//データ取得
$mt = Model_Test01::find($condition);
//表示
var_dump($mt);
}
{
//条件作成
$condition = array(
'where' => array(
'column_int02' => 10,
'column_varchar02' => "いいい"
),
);
//データ取得
$mt = Model_Test01::find($condition);
//表示
var_dump($mt);
}
結果φ(--)
array(2) {
[0]=>
object(Model_Test01)#24 (8) {
(中略)
["pk_id"]=>
string(1) "1"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
[1]=>
object(Model_Test01)#25 (8) {
(中略)
["pk_id"]=>
string(1) "3"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
}
[0]=>
object(Model_Test01)#24 (8) {
(中略)
["pk_id"]=>
string(1) "1"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
[1]=>
object(Model_Test01)#25 (8) {
(中略)
["pk_id"]=>
string(1) "3"
["column_varchar01"]=>
string(9) "あああ"
["column_int02"]=>
string(2) "10"
["column_varchar02"]=>
string(9) "いいい"
}
}
他に「find_by()」や「find_one_by()」等があるようですが、
1項目しか条件に指定できないようなので使う機会は多くないと思います。
ぶっちゃけ「find()」で代用できるし。
と言う訳でModel_Crudでのデータ取得、完了\(--)/