Store というテーブルがあるとして、
■Model
テーブル名を複数形にしたくない(既存のテーブル名を変えたくない)ので、$useTable で指定
in Model/Store.php
1 2 3 4 | class Store extends AppModel { var $useTable = 'Store' ; // 対象テーブル名を指定 } |
find 系の関数だけを使うのであれば、最初は空で ok 。
■Controller
/Store でアクセスできるようにコントローラを作成
in Controller/StoreController.php
1 2 3 4 5 | class StoreController extends AppController { public function index() { $this ->set( 'Store' , $this ->Store->find( 'all' , array ( 'limit' => '100' ))); } } |
全件検索すると1万行ぐらいあるので、最初の100行で打ち切り。find でリミットを指定できるのだけど、ここは「安全」にコーディングするために、find100 とかいうメソッドでアクセスしたほうがよいかも。
1 2 3 4 5 | class StoreController extends AppController { public function index() { $this ->set( 'Store' , $this ->Store->find100()); } } |
この場合は、Model/Store.php に find100 メソッドを追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Store extends AppModel { var $useTable = 'Store' ; function find100() { $sql = <<< HERE SELECT ID, AreaGroupID, Name FROM Store limit 0,100 HERE; return $this ->query( $sql ); } } |
こうやって SQL 文を直書きする。
■View
Controller で設定 $this->set(‘Store’,…) したところが使えるので、そのまま foreach でループさせる。
in View/Store/Index.ctp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | store index の表示 <h2>Store list</h2> <table> <tr> <td>id</td> <td>areagroupid</td> <td>name</td> </tr> <!-- <?php print_r( $Store ); ?> --> <?php foreach ( $Store as $item ) : ?> <tr> <td><?php echo $item [ 'Store' ][ 'ID' ] ?></td> <td><?php echo $item [ 'Store' ][ 'AreaGroupID' ] ?></td> <td><?php echo $item [ 'Store' ][ 'Name' ] ?></td> </tr> <?php endforeach ; ?> |
■結果
先頭の 100 件だけ表示する。