アジェンダ CakePHPのおさらい データベース 抽 象 化 レイヤ 機 能 クエリ 実 行 機 能 validation アソシエーション まとめ Copyright YusukeAndo. 2007. All rights reserved. 2



Similar documents
検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

参加表明書・企画提案書様式

経験発表

Microsoft Word - 佐野市生活排水処理構想(案).doc

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

Taro-2220(修正).jtd

1. 概 要 Webで 申 込 みした 手 続 きの 内 容 とNEXIでの 手 続 状 況 を Web 申 込 状 況 一 覧 で 確 認 することができます また 各 種 手 続 きにおいて 申 込 みを 完 了 せずに 保 存 状 態 にした 手 続 きを この 一 覧 から 再 開 すること

text

<4D F736F F D2093CD8F6F82AA954B977682C88C9A95A882CC94BB926682CC DD5F48508C668DDA E646F63>

電子申告直前研修会(所得税編)

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

スライド 1

スライド 1

PowerPoint プレゼンテーション

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

Memo

<4D F736F F D C689D789B582B581698AAE90AC92CA926D816A2E646F63>

PowerPoint プレゼンテーション

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

Taro-データ公安委員会相互協力事

はじめに この 平 成 28 年 度 地 域 型 住 宅 グリーン 化 事 業 適 用 申 請 書 記 入 の 手 引 き は 申 請 者 のみなさん が 申 請 書 の 作 成 と 評 価 業 務 をスムーズに 行 うため 申 請 書 の 書 き 方 を 手 引 きするものです 申 請 書 を 本

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

Microsoft Word - 03accessデータベース演習レジメ.doc

Microsoft PowerPoint - (セット)150120【資料6】点検結果の記録・データベースの整備_修正02

1 変更の許可等(都市計画法第35条の2)

2007 Microsoft Corporation. All rights reserved. 本 書 に 記 載 した 情 報 は 本 書 各 項 目 に 関 する 発 行 日 現 在 の Microsoft の 見 解 を 表 明 するものです Microsoft は 絶 えず 変 化 する

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

01.活性化計画(上大久保)

Taro-1-14A記載例.jtd

事前チェック提出用現況報告書作成ツール入力マニュアル(法人用)

Microsoft Word - サンプル _データベースアクセス_.doc

PowerPoint プレゼンテーション

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

第三十六号の二様式(第五条関係)(A4)

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

PowerPoint プレゼンテーション

EC-OrangePOS 簡易マニュアル

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

目 次 1.はじめに 書 式 の 説 明 表 紙 スケジュール 組 入 れ 基 準 併 用 禁 止 薬 併 用 注 意 薬 同 種 同 効 薬 医 師 モニタリング..

SPARQL Finder設置方法

目 次 電 子 申 請 を 使 用 した 申 請 の 流 れ 1ページ 申 請 書 ( 概 算 保 険 料 申 告 書 )の 作 成 2ページ 作 成 した 申 請 書 の 送 信 31ページ 状 況 照 会 電 子 納 付 を 行 う 62ページ 返 送 書 類 の 取 得 75ページ お 問 い

2 データの 表 示 構 造 を 設 定 するビュー データシートビュー: のアイコンをクリックして 表 示 する データを 設 計 されたモードに 従 って 表 示 する のアイコンをクリックして 表 示 する USB メモリーなど 記 憶 媒 体 を 取 り 出 すことについて データベースソフ

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

XML形式の電子報告書作成に当たっての留意事項

総合評価点算定基準(簡易型建築・電気・管工事)

スライド 1

<4D F736F F D2090C389AA8CA72D92F18F6F2D D F ED28CFC82AF91808DEC837D836A B E838B A815B816A2E646F6378>

その 他 事 業 推 進 体 制 平 成 20 年 3 月 26 日 に 石 垣 島 国 営 土 地 改 良 事 業 推 進 協 議 会 を 設 立 し 事 業 を 推 進 ( 構 成 : 石 垣 市 石 垣 市 議 会 石 垣 島 土 地 改 良 区 石 垣 市 農 業 委 員 会 沖 縄 県 農

目 次 画 面 遷 移 図 1.ログイン 画 面 2. 画 面 構 成 3.メニュー 4.タスク 一 覧 4-1.タスク: 新 規 4-2.タスク: 閲 覧 4-3.タスク: 更 新 5.タスク 検 索 6. 通 知 メール 6-1. 通 知 メール: 新 規 / 修 正 7. 連 絡 事 項 7-

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

スライド 1

Microsoft Word - CiNii看護大

< F2D8AC493C CC81698EF3928D8ED2816A2E6A7464>

独立行政法人国立病院機構呉医療センター医療機器安全管理規程

スライド 1

1

6 構 造 等 コンクリートブロック 造 平 屋 建 て4 戸 長 屋 16 棟 64 戸 建 築 年 1 戸 当 床 面 積 棟 数 住 戸 改 善 後 床 面 積 昭 和 42 年 36.00m m2 昭 和 43 年 36.50m m2 昭 和 44 年 36.

 

平成19年9月改定

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

<4D F736F F D208ED089EF95DB8CAF89C193FC8FF38BB CC8EC091D492B28DB88C8B89CA82C982C282A282C42E646F63>

別冊資料-11

スライド 1

経 理 上 くん db(version 8.001)の 変 更 点 概 要 Ⅰ. 消 費 税 /リバースチャージ 方 式 の 申 告 に 対 応 1 特 定 課 税 仕 入 特 定 課 税 仕 入 返 還 区 分 を 追 加 しました Ⅱ.その 他 の 改 良 修 正 詳 細 は 後 述 を 参 照

全設健発第     号

の 購 入 費 又 は 賃 借 料 (2) 専 用 ポール 等 機 器 の 設 置 工 事 費 (3) ケーブル 設 置 工 事 費 (4) 防 犯 カメラの 設 置 を 示 す 看 板 等 の 設 置 費 (5) その 他 設 置 に 必 要 な 経 費 ( 補 助 金 の 額 ) 第 6 条 補

平成25年度 独立行政法人日本学生支援機構の役職員の報酬・給与等について

「給与・年金の方」からの確定申告書作成編

特 徴 差 分 点 検 レセ 楽 netの 点 検 方 式 は レセ 電 データを 使 用 した 差 分 点 検 です 前 回 点 検 分 と 比 較 して データ 内 容 と 記 録 順 が 異 なる 場 合 のみ 点 検 を 行 います 追 加 されたデータの 点 検 実 施 病 名 追 加 さ

(別紙3)保険会社向けの総合的な監督指針の一部を改正する(案)

(現行版)工事成績書と評定表をあわせた_docx

2. データを 検 索 する なごやコレクションのデータを 検 索 するための 方 法 として キーワード 検 索 詳 細 検 索 の 二 通 りの 検 索 方 法 が あります 2.1. キーワードから 探 す キーワードを 入 力 する トップページの 入 力 ボックスに 検 索

答申第585号

外形標準課税に関するQ&A

2016 年 度 情 報 リテラシー 変 更 された 状 態 同 様 に 価 格 のセルを 書 式 設 定 する 場 合 は 金 額 のセルをすべて 選 択 し [ 書 式 ]のプルダウンメニューか ら[ 会 計 ]を 選 択 する すると が 追 加 され 金 額 としての 書 式 が 設 定 さ

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

Excel 応 用 Ⅱ Excelの 知 識 をより 深 め 今 以 上 に 活 用 し 業 務 を 効 率 化 させたい 人 にお 勧 めします また 豊 富 な 問 題 演 習 で 実 務 に 活 かせるスキルを 身 につけます 容 : 複 合 グラフの 操 作 データベースの 活 用 ピボット

名 刺 Scan とは 名 刺 Scan 情 報 を 顧 客 パーソン 情 報 として 登 録 する 名 刺 Scan とは 複 合 機 やスマートフォンなどでスキャンした 名 刺 データを 弊 社 指 定 の 名 刺 管 理 ソフトを 利 用 して 文 字 認 識

税金読本(8-5)特定口座と確定申告

マンション電子投票サービス ご説明資料

編 5ヶ 月 6 総 論 7 抜 ピ ド ピ ド 速 永 久 繰 ロ セ 慣 容 易 結 共 通 決 々 5 照 づ 具 ご 紹 介 与 監 査 比 較 場 限 提 始 箇 提 進 ご 安 心 話 提 与 監 査 雑 把 与 締 役 緒 算 類 作 機 関 従 来 税 始 忘 生 物 繰 切 忘 葉

スライド 1

表紙

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

01_07_01 データのインポート_エクスポート_1

Microsoft PowerPoint - [参考資料1]本事業におけるe-Radの入力方法

目 次 1. 論 理 関 数 IF IF の 概 要 論 理 式 の 種 類 等 号 不 等 号 具 体 的 な 使 い 方 ネスト 複 数 の 条 件 を 記 述...

Taro13-01_表紙目次.jtd

Microsoft Word - H29年度実施要領

ez_meishi.ppt

DN6(R04).vin

1 変更の許可等(都市計画法第35条の2)

Transcription:

CakePHPのModelを 使 う データベース 関 連 処 理 をシンプルに 解 決 Copyright YusukeAndo. 2007. All rights reserved. 2007 年 3 月 28 日 安 藤 祐 介 1

アジェンダ CakePHPのおさらい データベース 抽 象 化 レイヤ 機 能 クエリ 実 行 機 能 validation アソシエーション まとめ Copyright YusukeAndo. 2007. All rights reserved. 2

CakePHPのおさらい Copyright YusukeAndo. 2007. All rights reserved. 3

状 況 Scafolding 機 能 等 を 持 つRoR 世 代 のフレームワーク 環 境 に 依 存 しないで 動 作 する (PHP4/5) 外 部 ライブラリなどを 必 要 としないフルスタックなフレー ムワーク とにかく 簡 単 に 利 用 可 能 かつ 拡 張 性 も 十 分 日 本 国 内 での 利 用 も 拡 大 中 Copyright YusukeAndo. 2007. All rights reserved. 4

Googleのトレンド 情 報 直 近 のデータの 絞 込 みが 出 来 るように 日 本 語 での 検 索 トレンド2 位 (2007/3 現 在 ) Copyright YusukeAndo. 2007. All rights reserved. 5

コードのイメージ app/models/memo.php classmemoextendsappmodel{ var$name='memo'; var$belongsto=aray('user'); リレーション 指 定 app/models/user.php classuserextendsappmodel{ var$name='user'; var$validate=aray( 'login_id'=>'/^[a-za-z0-9]*$/', 'password'=>'/^[a-za-z0-9]*$/', 'name'=>valid_not_empty, ); Copyright YusukeAndo. 2007. All rights reserved. 6

コードのイメージ app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ var$scafold; var$name='memos'; Scafoldの 利 用 クラス 名 の 指 定 functionindex() { // 表 示 データを 取 得 $data=$this->memo->findal(nul,nul,'memo.iddesc'); $this->set('data',$data); Copyright YusukeAndo. 2007. All rights reserved. 7

実 行 例 少 ないコード 量 でWEBアプリが 作 成 可 能 Copyright YusukeAndo. 2007. All rights reserved. 8

データベース 抽 象 化 レイヤ 機 能 Copyright YusukeAndo. 2007. All rights reserved. 9

データベースの 抽 象 化 データベースの 種 類 を 問 わない 実 装 を 提 供 PEAR:DBやPDOなどが 広 く 認 知 パラメータを 元 に 各 DB 用 の 処 理 を 内 部 で 判 別 CakePHPはライブラリを 必 要 とせずに 抽 象 化 を 実 現 CakePHPは app/config/database.php 内 の 設 定 によ り 下 記 のデータベースを 利 用 可 能 mysqlpostgressqliteadodbpearmssqlodbc 主 要 なデータベースをカバーし PEAR ADOdb 等 も 利 用 可 能 Copyright YusukeAndo. 2007. All rights reserved. 10

データベース 設 定 の 記 述 例 app/config/database.php classdatabase_config { var$default=aray('driver'=>'mysql', 'connect'=>'mysql_connect', 'host'=>'localhost', 'login'=>'dbuser', 'password'=>'hoge', 'database'=>'beefcury', 'prefix'=> '); 利 用 するドライバ 永 続 接 続 など 接 続 先 設 定 テーブル 名 の 接 頭 語 var$test=aray('driver'=>'mysql', 'connect'=>'mysql_connect',. PEARを 利 用 する 場 合 は pear-mysqlのように 記 述 複 数 の 設 定 を 記 述 可 Copyright YusukeAndo. 2007. All rights reserved. 11

複 数 のデータソースのサポート 複 数 のデータソースが 必 要 な 状 況 複 数 のデータベースを 同 時 扱 う 場 合 運 用 時 と 開 発 時 で 接 続 先 を 切 り 替 える 場 合 検 索 機 能 などで 参 照 用 データベースへ 接 続 する 場 合 上 記 の 様 な 場 合 はdatabase.php 内 に 複 数 の 設 定 を 記 述 して おく 事 で 設 定 ファイルの 都 度 書 換 えなどをせずに 対 応 可 能 ( 特 に 指 定 しない 場 合 は $defaultが 使 用 される ) Copyright YusukeAndo. 2007. All rights reserved. 12

Modelの 使 用 する 設 定 の 指 定 app/models/memo.php(モデル 毎 に 指 定 する 場 合 ) classmemoextendsappmodel{ var$name='memo'; var$belongsto=aray('user'); var$usedbconfig= test ; 使 用 する 設 定 の 名 称 app/app_model.php(アプリ 全 体 に 適 用 する 場 合 ) classappmodelextendsmodel{ function _construct(){ if(debug>0){ $this->usedbconfig="test"; parent:_construct(); デバッグモードであれば 開 発 用 DBへ 接 続 Copyright YusukeAndo. 2007. All rights reserved. 13

クエリ 実 行 機 能 Copyright YusukeAndo. 2007. All rights reserved. 14

CakePHPが 提 供 するクエリ 実 行 機 能 Modelを 通 じて 下 記 の 処 理 が 可 能 対 象 テーブル 主 キーの 指 定 データ 構 造 を 元 にした 登 録 更 新 クエリの 自 動 実 行 条 件 を 元 にした 検 索 クエリの 自 動 実 行 任 意 のSQLの 実 行 scafoldを 利 用 する 場 合 などは 上 記 の 機 能 を 意 識 する 必 要 は ないが コードの 実 装 を 行 う 場 合 は 非 常 に 有 用 な 機 能 都 合 が 悪 い 場 合 はSQLの 任 意 実 行 する 従 来 の 方 法 も 可 能 Copyright YusukeAndo. 2007. All rights reserved. 15

対 象 テーブル 主 キーの 指 定 モデル 名 を 元 に 自 動 でテーブルを 決 定 例 )モデル 名 :Book 対 象 テーブル:books idという 名 称 のカラムを 主 キーとして 認 識 上 記 のルール 外 のテーブル 主 キーを 指 定 したい 場 合 は モデルのプロパティに 設 定 を 行 う 対 象 テーブルにNULLを 指 定 する 事 でDBを 使 用 しないモ デルとする 事 も 可 能 既 存 のスキーマやルールの 上 でCakeを 使 う 場 合 の 必 須 知 識 Copyright YusukeAndo. 2007. All rights reserved. 16

対 象 テーブル 主 キーの 指 定 例 app/models/user.php classuserextendsappmodel{ var$name= User'; var$usetable= user_account ; var$primarykey= login_id ; 使 用 するテーブル 名 主 キーのカラム 名 var$validate=aray( 'login_id'=>'/^[a-za-z0-9]*$/', 'password'=>'/^[a-za-z0-9]*$/', 'name'=>valid_not_empty, ); 暗 黙 的 なルールに 従 うよりも 把 握 しやすい 場 合 も Copyright YusukeAndo. 2007. All rights reserved. 17

登 録 更 新 クエリの 自 動 実 行 配 列 化 したパラメータを 元 に 自 動 でクエリを 実 行 idという 名 称 のカラムを 主 キーとして 認 識 主 キーを 指 定 し 該 当 レコードが 存 在 すれば 更 新 単 一 カラムの 更 新 であれば 直 接 指 定 も 可 能 INSERT UPDATEなどのSQLを 整 形 する 必 要 が 無 くなる Copyright YusukeAndo. 2007. All rights reserved. 18

登 録 更 新 クエリの 自 動 実 行 例 ( 配 列 版 ) app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ functionhoge(){ $data['memo']=aray( ); 'kind_cd'=>'2', 'user_id'=>'2', 'contents'=>'モデルから 登 録 ' $this->memo->save($data); $this->flash('hoge','/memos/'); カラム 名 をキーにした ハッシュを 渡 す テスト 用 の 表 示 INSERT UPDATEなどのSQLを 整 形 する 必 要 が 無 くなる ( 渡 すデータに 存 在 する 主 キーの 指 定 を 含 めればUPDATE) Copyright YusukeAndo. 2007. All rights reserved. 19

登 録 更 新 クエリの 自 動 実 行 例 ( 配 列 版 ) SQLデバッグ 表 示 で 確 認 タイムスタンプなどは 自 動 で 補 完 して 実 行 Copyright YusukeAndo. 2007. All rights reserved. 20

更 新 クエリの 自 動 実 行 例 ( 単 一 カラム 版 ) app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ functionhoge2(){ 対 象 のレコードを 指 定 $this->memo->id=4; $this->memo->savefield('contents',' 部 分 更 新 '); $this->flash('hoge2','/memos/'); モデルのプロパティに 対 象 レコードのIdを 指 定 する Copyright YusukeAndo. 2007. All rights reserved. 21

更 新 クエリの 自 動 実 行 例 ( 単 一 カラム 版 ) SQLデバッグ 表 示 で 確 認 ステータスの 更 新 などに 便 利 Copyright YusukeAndo. 2007. All rights reserved. 22

検 索 クエリの 自 動 実 行 配 列 化 したパラメータを 元 に 自 動 でクエリを 実 行 取 得 対 象 カラム ORDERLIMITなどが 指 定 可 能 自 力 で 構 築 したWHERE 句 の 指 定 も 可 能 マジックメソッドでの 検 索 も 可 能 findby{カラム 名 全 ての 引 数 には 初 期 値 あり functionfindal($conditions=nul,$fields=nul, $order=nul,$limit=nul,$page=1,$recursive= nul) Copyright YusukeAndo. 2007. All rights reserved. 23

検 索 クエリの 自 動 実 行 (find findal) app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ functionhoge3(){ 検 索 パラメータ $cond=aray( Memo.kind_cd => 2,//kind_cd= 2 に 展 開 される ); Memo.created => >=2007-01-01 //>=での 比 較 になる 今 回 は 条 件 のみ 指 定 $data=$this->memo->findal($cond); $this->flash('hoge3','/memos/'); Copyright YusukeAndo. 2007. All rights reserved. 24

検 索 クエリの 自 動 実 行 SQLデバッグ 表 示 で 確 認 =の 比 較 >=の 比 較 パラメータを 元 にWHERE 句 を 生 成 して 実 行 Copyright YusukeAndo. 2007. All rights reserved. 25

検 索 クエリの 自 動 実 行 (OR 検 索 ) app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ functionhoge4(){ $cond['or']=aray( 'Memo.kind_cd'=>'2', 'Memo.created'=>'>=2007-01-01' ); $data=$this->memo->findal($cond); $this->flash('hoge4','/memos/'); Copyright YusukeAndo. 2007. All rights reserved. 26

検 索 クエリの 自 動 実 行 (OR 検 索 ) SQLデバッグ 表 示 で 確 認 OR 検 索 も 可 能 (INLIKEも 可 能 ) Copyright YusukeAndo. 2007. All rights reserved. 27

検 索 時 の 注 意 点 比 較 演 算 子 の 指 定 方 法 はどうすれば? 値 の 前 に 演 算 子 を 置 き スペースを 空 ける 省 略 時 は =として 比 較 する 句 を 生 成 値 が 配 列 の 場 合 は IN(n,n,n)に 展 開 入 力 値 を 値 に 使 う 場 合 は =であっても 明 示 的 に 指 定 す る 演 算 子 をインジェクションされないように 注 意 Copyright YusukeAndo. 2007. All rights reserved. 28

入 力 値 との 組 み 合 わせ 例 app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ functionmoge(){ $param=$this->data['memo']['kind_cd']; $cond=aray( 'kind_cd'=>'= '.$param ); $this->memo->findal($cond); 入 力 値 に 比 較 演 算 子 などが 入 るので=での 比 較 を 指 定 Copyright YusukeAndo. 2007. All rights reserved. 29

入 力 値 との 組 み 合 わせ 例 SQLデバッグ 表 示 で 確 認 値 として 処 理 危 険 な 入 力 値 が 入 っても 適 切 に 処 理 されている Copyright YusukeAndo. 2007. All rights reserved. 30

任 意 のSQLの 実 行 app/controlers/memos_controler.php classmemoscontrolerextendsappcontroler{ functionhoge5(){ $sql= SELECT*FROMmemos ; $data=$this->memo->query($sql); $this->flash('hoge5','/memos/'); functionhoge6(){ $cond="kind_cd>4"; $order="iddesc"; $data=$this->memo->findal($cond,null,$order); $this->flash('hoge6','/memos/'); Copyright YusukeAndo. 2007. All rights reserved. 31

validation Copyright YusukeAndo. 2007. All rights reserved. 32

validation 機 能 validation 機 能 の 概 要 Model 内 に 各 カラムの 制 限 値 を 正 規 表 現 で 設 定 save()メソッド 実 行 時 に 自 動 で 検 査 し 通 過 時 のみデータを 登 録 する validatesメソッドで 任 意 に 実 行 も 可 能 独 自 の 検 証 ロジックが 必 要 な 際 はModelのvalidatesをオー バーライドして 実 装 する エラーの 状 況 を 画 面 出 力 などに 必 要 な 場 合 は validateerorsメソッドを 利 用 scafoldではこれらの 機 能 がフル 活 用 されている Copyright YusukeAndo. 2007. All rights reserved. 33

Validation 設 定 例 app/models/user.php classuserextendsappmodel{ var$name= User'; var$usetable= user_account ; var$primarykey= login_id ; var$validate=aray( 'login_id'=>'/^[a-za-z0-9]*$/', 'password'=>'/^[a-za-z0-9]*$/', 各 カラムへの 設 定 ); 'name'=>valid_not_empty, 空 欄 数 値 メールなどについては 定 数 が 利 用 可 能 Copyright YusukeAndo. 2007. All rights reserved. 34

Validation 設 定 例 app/controlers/users_controler.php <?php classuserscontrolerextendsappcontroler{ functionfuga(){ $data['user']=aray( 'login_id'=>'+*+*+*+*', 'password'=>'abcde', 'name'=> ' ); if($this->user->validates($data)){ $this->user->save($data); else{ $this->validateerors($this->user); 不 正 を 含 むデータ 適 合 していれば 保 存 エラー 項 目 の 取 得 Copyright YusukeAndo. 2007. All rights reserved. 35

Validation 設 定 例 app/views/users/fuga.thtml <?phpecho$html->tagerormsg('user/login_id','ログインidが 正 しくありません ')?> <?phpecho$html->tagerormsg('user/password','パスワードが 正 しくありません ')?> <?phpecho$html->tagerormsg('user/name',' 名 前 が 正 しくありません ')?> tagerormsgで 該 当 モデルの 該 当 項 目 にエラーがあった 場 合 の 表 示 を 定 義 可 能 Copyright YusukeAndo. 2007. All rights reserved. 36

Validation 設 定 例 SQLは 実 行 されず エラー 項 目 がViewへ 通 知 されている Copyright YusukeAndo. 2007. All rights reserved. 37

アソシエーション Copyright YusukeAndo. 2007. All rights reserved. 38

アソシエーション 機 能 Model 内 で 従 属 関 係 を 指 定 する belongsto hasmany hasonehasandbelongstomanyな どを 指 定 可 能 外 部 キーが 命 名 規 則 に 当 てはまらない 場 合 はキー 名 も 併 せ て 指 定 する 上 記 の 設 定 がなされていればfindAlなどの 際 に 従 属 テーブ ルをJOINするSQLが 実 行 される findalなどのrecursive 引 数 により 関 連 レコードの 取 得 深 度 を 設 定 可 基 本 的 にModelに 対 して 設 定 をするだけでOK Copyright YusukeAndo. 2007. All rights reserved. 39

アソシエーション 設 定 の 例 app/models/memo.php classmemoextendsappmodel{ var$name='memo'; var$usedbconfig= test ; //var$belongsto=aray('user'); var$belongsto=aray('user'=> aray('classname'=>'user', 'conditions'=> ', 'order'=> ', リレーション 簡 易 設 定 リレーション 設 定 ( 冗 長 な 記 述 ) 'foreignkey'=>'user_id' )); 冗 長 な 設 定 をする 場 合 はbake.phpなどを 利 用 すると 良 い Copyright YusukeAndo. 2007. All rights reserved. 40

検 索 クエリの 自 動 実 行 (アソシエーション 時 ) Copyright YusukeAndo. 2007. All rights reserved. 41

まとめ Modelの 機 能 を 活 用 する 事 でDB 処 理 を 大 幅 にカット 可 能 汎 用 性 に 配 慮 した 実 装 になっている 状 況 次 第 で 従 来 どおりのクエリ 処 理 を 記 述 してもOK アソシエーションなどの 設 定 はツールを 活 用 した 方 が 良 い 実 感 としてはかなり 楽 です (クエリの 整 形 とか) 利 用 のインターフェースが 複 数 用 意 されているので 違 和 感 のない 利 用 方 法 が 見 つけられると 思 います Copyright YusukeAndo. 2007. All rights reserved. 42

謝 辞 参 考 サイト CakePHPのおいしい 食 べ 方 htp://cakephp.seesaa.net/ Copyright YusukeAndo. 2007. All rights reserved. 43

質 疑 応 答 ご 静 聴 ありがとうございました Copyright YusukeAndo. 2007. All rights reserved. 44