CakePHPでは手軽にデータを取得することが出来ます。
しかし、通常のSQLの書き方とは違い慣れるまでは戸惑うかもしれません。
検索条件やフィールドなどを記述する場合にもSQLではwhere句の後に記述していたと思いますが、
CakePHPでは配列で定義します。
取得するフィールドを指定します。
【order】
並び替え
【group】
グループ化する
【limit】
取得数
【page】
ページを指定する
【offset】
開始位置
パラメーターの設定が終わったら、次は値を取得するための記述をします。
class Test extends AppModel {
public function getlist(){
return $this->find('all',$option);
}
}
今回はModel層から取得することを想定している為、controller層から取得する場合は記述方法が少し異なります。
今回は簡単な一般的な取得方法を掲載している為、他にも様々な取得方法があります。
詳しくはCakePHPの公式サイトを御覧ください。
http://book.cakephp.org/2.0/ja/models/retrieving-your-data.html
しかし、通常のSQLの書き方とは違い慣れるまでは戸惑うかもしれません。
検索条件やフィールドなどを記述する場合にもSQLではwhere句の後に記述していたと思いますが、
CakePHPでは配列で定義します。
$option = array(
'conditions' => array(flg' => 1),
'recursive' => 1,
'fields' => array('Model.field1', 'DISTINCT Model.field2'),
'order' => array('Model.created', 'Model.field3 DESC'),
'group' => array('Model.field'),
'limit' => n,
'page' => n,
'offset' => n,
'callbacks' => true //falseの他に'before'、'after'を指定できます
);
【conditions】
カウントが1以上や性別が男性などの検索条件を指定する場合に使用します。
【recursive】
【conditions】
カウントが1以上や性別が男性などの検索条件を指定する場合に使用します。
【recursive】
どのぐらい深く関連モデルのデータを取得すべきか、 を定義します。
【fields】- -1 CakeはGroupのデータだけを取得する。joinしない。
- 0 CakeはGroupのデータとそのドメインを取得する。
- 1 Cake は1つのGroupとそのドメインとそれに関連したUserを取得する。
- 2 Cake は1つのGroupとそのドメインとそれに関連したUserと各Userに関連したArticleを取得する。
取得するフィールドを指定します。
【order】
並び替え
【group】
グループ化する
【limit】
取得数
【page】
ページを指定する
【offset】
開始位置
パラメーターの設定が終わったら、次は値を取得するための記述をします。
class Test extends AppModel {
public function getlist(){
$option = array(
'conditions' => array(flg' => 1),
'recursive' => 1,
'fields' => array('Model.field1', 'DISTINCT Model.field2'),
'order' => array('Model.created', 'Model.field3 DESC'),
'group' => array('Model.field'),
'limit' => n,
'page' => n,
'offset' => n
);return $this->find('all',$option);
}
}
今回はModel層から取得することを想定している為、controller層から取得する場合は記述方法が少し異なります。
今回は簡単な一般的な取得方法を掲載している為、他にも様々な取得方法があります。
詳しくはCakePHPの公式サイトを御覧ください。
http://book.cakephp.org/2.0/ja/models/retrieving-your-data.html