cakephp3とMySQLデータベースを使って1画面作ってみました!

WEB制作・開発実例・コラム
2017.05.24

cakephp3について勉強した内容を備忘録的に書いてみました。
今回はcakephp3の公式ブログチュートリアルを参考にしております。

作成環境

・Mac OS X
・MySQL 5.6
・cakephp3
・php 7.0
・apache 2.4

データベースの作成


データベースを作成するため、ターミナルでMySQLにログインします。(mac環境を使用しております)

 mysql -uroot -p

今回の画面で使用するデータベースを作成します。

 create databases users;

データベースがちゃんと作成できたかどうか確認します。

 show databases;

作成したデータベース(‘TEST’)に接続し、テーブルとデータを追加していきます。

先ほど作成したデータベースに接続します。

 use TEST

テーブルを作成します。

テーブルを作成する時の条件として、テーブル名は複数形、テーブル項目(カラム)は単数形で作成するようです。 (こちらはcakephpの命名規約らしいです・・)

 create table users(id int(11) UNIQUE,username varchar(50));

テーブルを作成したら、こちらもちゃんと出来ているか確認します。

 show tables;

上記で作成したテーブルにデータを挿入します。

 insert into users values (1,’田中 次郎’);

 insert into users values (2,’山田 太郎’);

 insert into users values (3,’山田 次郎’);

 insert into users values (4,’田中 太郎’);

データがちゃんと入っているか確認します。

 select * from users;

cakephpで使用するデータベースとデータの作成が完了しました!

cakephp データベースの取得と表示


先ほど作成したデータベースの情報をcakephpを利用して画面に表示したいと思います。

cakephpはMVCモデルのフレームワークです。

MVCモデルのフレームワークとはプログラムを”MODEL”,”VIEW”,”CONTROLLER”の3つの役割を持った機能に 分類し、開発に必要な汎用的なプログラムが事前に用意されているものとのことです。
以下に自分なりのMVCの簡単な図を描いてみました。

 

データベースの情報を表示するにあたって、初めにデータを管理しているMODELを作成したいと思います。
MODELファイルにも命名規約があるようで、「テーブル名+TABLE.php」となるようファイルを作成します。

<?php
// UsersTable.php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;

class UsersTable extends Table {
    public function validationDefault(Validator $validator) {
        $validator
        ->notEmpty('id','username');
        return $validator;
    }
}
?>

ここで主に行うのは使用するテーブルの管理とデータバリデーションです。 データバリデーションとはデータの入力チェックのことを表します。
今回は作成したテーブルの項目’id’と’username’をNULLには出来ないですよという制約をつけています。

次にデータや表示内容の制御を行うCONTROLLERを作成します。

<?php
// UsersController.php
namespace App\Controller;
class UsersController extends AppController {
    public function index() {
        $users = $this->Users->find('all');
        $this->set('users',$users);
    }
}
?>

ここではModelからデータを取得し、Viewへ渡すデータを選定しています。
今回はすべてのデータをViewへと渡しています。

最後にVIEWを作成します。

<h1>サンプル画面</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Name</th>
    </tr>
<?php foreach ($users as $user): ?>
    <tr>
        <td><?php echo $user&#91;'id'&#93;; ?></td>
        <td><?php echo $user&#91;'username'&#93;; ?></td>
    </tr>
<?php endforeach; ?>
</table>

データベースに登録したデータを順番に表示するだけの簡単な内容です。 出来上がった画面を確認してみます。

 

たった3つのファイルを作成するだけで簡単?に一つの画面を作成することが出来ました!

 

おまけ! MySQLWorkBench


今回の画面を作成するにあたって、ターミナル上からMySQLデータベースに接続して操作を行いましたが、 作成するテーブル、カラムの数やカラムの制約が多くなるとコマンドを一つ一つ打つのはかなり大変です。

そこで”MySQLWorkBench”というGUIツールを使うと作業がかなり楽です。
(ちなみに今までは”CSE”を使ってました!)

上記の画像のようにテーブルの状況がグラフィックで操作できます!

フレームワーク”cakephp3″を使ってみて


私は今までjavaを使った開発を主に行ってきました。
今回、cakephp3というフレームワークを使ってみて、思ったことは 何よりデータの取得がとても楽で便利です。
また、作成のスピードがとにかく早いということです。php歴2週間の私でも、作成時間なんと30分!

 

今後、cakephp3とデータベースを使って様々なシステム、アプリの開発を行っていきたいと思います。

フレームワークなしでのPHP開発も勉強中です!
pubsubhubbbubリクエストとフィード作成処理とかについて書いてます。
お時間ありましたら読んだいただけるとうれしいです!!

【最短5分】早くGoogleインデックスさせる方法。feedとPabsubhubbubの話!


コラム

最新コラム

人気コラム

ご質問やご相談などお気軽にお問い合わせください。

お電話でのお問い合わせはこちら

03-5829-9912

受付時間:平日10:00~19:00(土・日・祝日を除く)