CakePHP2.x Model(MySQL)」カテゴリーアーカイブ

CakePHP2.x Model

ここではCakePHP2.x Modelの簡単な解説をしていきます。

cakephp

サンプルソースのsql文は仕事で使ったものをそのまま使用しているだけなので、
ご了承お願いします。

サンプルソース

<?php
  
    class Article extends AppModel {
        public $useTable = 'dtb_article';
        public $primaryKey = 'id';
  
        /**
         * $this->query
         * @param type $limit
         */
        public function getQuery($limit) {
            $sql = "SELECT id, name "
                 . "  FROM dtb_article AS ar "
                 . "  LEFT JOIN dtb_news AS ne ON ar.id = ne.id "
                 . " WHERE ar.delflg = 0 "
                 . " GROUP BY ar.id "
                 . " ORDER BY MAX(regi_date) DESC "
                 . " LIMIT {$limit}";
            return $this->query($sql);
        }
         
        /**
         * 1レコード
         * @param type $id
         */
        public function getRow($id) {
            $sql = "SELECT * "
                 . "  FROM dtb_article "
                 . " WHERE id = {$id} ";
            list($result) = $this->query($sql);
            return $result['dtb_article'];
        }
         
        /**
         * 1列
         */
        public function getName() {
            $sql = "SELECT name "
                 . "  FROM dtb_article ";
            $data = $this->query($sql);
            $result = Set::extract('/dtb_article/name', $data);
            return $result;
        }
         
        /**
         * インデックス=>値
         */
        public function getList() {
            $options = array(
                "fields" => array(
                    "id", 
                    "name",
                )
            );
            $this->find("list", $options);
        }
    }

解説

public $useTable = ‘dtb_article’; (4行目)
class名が規約に沿わない場合テーブル名の指定してください。

public $primaryKey = ‘id’; (5行目)
カラム名primaryKeyがidではない場合のみ指定してください。
idなら省略可です。

$this->query (11~20行目)
sql文でデータを取得したいときに使用してください。

Set::extract(‘/dtb_article/name’, $data); (37~43行目)
配列のソートです。
Set::extract(/テーブル名/カラム名,query結果)で指定するとnameの1次元配列で返してくれます。

$this->find(“list”, $options); (48~56行目)
id => nameの配列で返します。
$this->find(“list”)とすると
テーブルのカラム名id => nameがデフォルトで選択されます。

とりあえずデータの取得でよく使う方法をまとめてみました。