CakePHP の MySQL 設定を行います♪ | oki2a24 の続きとなります。
CakePHP でデータベースからデータをひっぱって来る勉強をします。シンプルに!なのでモデルは使いません!
まとめ
- DB データは $this->Board->find(‘all’); で取得できますが、この Board はモデル名を指す。モデルなので単数形であることに注意です。
- 「Board はモデル名を指す」といいつつ、Model フォルダに Board モデルが無くても問題ありません。
- ただし DB に Boards テーブルは必要です。テーブルは複数形であることに注意です。
前提
- CakePHP 2.1.3 導入済み。
- ドキュメントルート/cake/sample/(ここにCakePHP が入ってます。app ディレクトリとか、.travis.yml ファイルとか。)
DB の準備
前回、DB を作っておいてからの設定を勉強しましたが、その DB を作る SQL も載せておきます。あとは、テーブルと、データの SQL となります。
# DB、ユーザ、の作成。パスワードの設定 GRANT ALL PRIVILEGES ON cakebords.* TO cakebords@localhost IDENTIFIED BY 'cakebords'; FLUSH PRIVILEGES; CREATE DATABASE cakebords CHARACTER SET utf8; # テーブルの作成 CREATE TABLE `boards` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `title` varchar(255) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; # データの作成 INSERT INTO `boards` (`id`, `name`, `title`, `content`) VALUES (1, '山田', 'はっけよーい', 'のこった!のこった!のこった!のこった!のこった!のこった!のこった!のこった!のこった!★\r\nのこった!のこった!のこった!のこった!のこった!のこった!のこった!のこった!のこった!のこった!★'), (2, '佐藤', '位置について、よーい', 'ドン!ドン!ドン!ドドンガドン!\r\n\r\nドン!ドン!ドン!ドドンガドン!\r\n\r\nドン!ドン!ドン!ドドンガドン!\r\n\r\nドン!ドン!ドン!ドドンガドン!\r\n\r\nドン!ドン!ドン!ドドンガドン!');
ソース
cake/sample/app/Controller/BoardsController.php
<?php
class BoardsController extends AppController {
public $name = 'Board';
public function index() {
$data = $this->Board->find('all');
$this->set('data', $data);
}
}
?>
DB データを $this->Board->find(‘all’); で取得しています。ポイントは、この Board はモデル名を指すということです。モデルなので単数形であることに注意です。モデル=単数形であることは、こちらの CakePHPの規約 — CakePHP Cookbook v2.x documentation でご確認くださいませ。
「Board はモデル名を指す」といいつつ今回、Model フォルダに Board のモデルは作成していません。モデルが無くても DB にテーブルがあれば問題ないのですね。
Boards テーブルを用意したわけですが、ちなみに、テーブルは複数形であることに注意です。
cake/sample/app/View/Boards/index.ctp
<h1>送信フォーム・サンプル</h1>
<table>
<?php
for($i = 0; $i < count($data); $i++) {
echo $this->Html->tableCells($data[$i]['Board'], array(), array(), true);
}
?>
</table>
<br />
<br />
<br />
<pre>
<?php print_r($data); ?>
</pre>
Html ヘルパーを使っています。詳細は、割愛します。
print_r 関数を pre タグで囲えば、見やすい結果が取得できます。ワンポイント!
結果
あれぇ~?です。ビューを Boards フォルダだと認識してくれません。
Boards の複数形を現す s がいけないみたいです。本には Boards フォルダにせよ!と書いてあるし、公式のブログチュートリアル – レイヤーの追加 — CakePHP Cookbook v2.x documentation でも View フォルダの下に作るフォルダは複数形です。
試しに、指摘どおりに Board と単数形にフォルダ名を変更して、 cake/sample/app/View/Board/index.ctp、としてみます。
表示されました。。。。うーん、これでいいのでしょうか?いや、おかしいはずです。なぜなら、本家 CakePHPの規約 — CakePHP Cookbook v2.x documentation を読んでみても View フォルダ内に作るフォルダは、複数形です。単数形ではだめなはずです。・・・わかりません。
→解決しました!CakePHP の View 内のフォルダ名が規約違反でも通ってしまう問題を解決しました! | oki2a24
課題
- View フォルダ内に作るフォルダ名が単数形でないとエラーとなる不思議
→解決しました!CakePHP の View 内のフォルダ名が規約違反でも通ってしまう問題を解決しました! | oki2a24 - table のセル内で改行を有効にするにはどうしたら良いでしょう?



「CakePHP2 で DB データを表示するシンプルな例!モデルなしで勉強です!」への1件の返信
[…] CakePHP で DB データを表示するシンプルな例!モデルなしで勉強です! | oki2a24 の続きとなります。 […]