CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#007)

SPONSORED LINK

Pocket

さてCakePHPのお勉強。前回までのあらすじはこちら。

» CakePHP修行! アーカイブ | i d e a * i d e a

さていくつか進捗報告。

■ ちょっと調べたこと

ここまでで大枠はわかってきたので空き時間に勉強するように参考文献がないかあたってみました。いくつかの発見をシェア。

書籍は今のところ洋書しかなさそう。下の書籍が見つかりましたがまだそんな段階ではないので購入は保留。

» CakePHP Recipes

ニュース記事は青い人の記事以外にもこれを発見。ただ、2ページ目から会員登録が必要だったので読んでいない。

» CodeZine:CakePHPフレームワークによる快速WEB開発(CakePHP, Cake, PHP, フレームワーク)

ブログでは「CakePHPのおいしい食べ方」なるものが!これは良さそうですが、まだ自分のレベルが追い付いていない予感。数か月たったら(そして挫折してなかったら)読み返す。ちなみにこのブログも取り上げていただきました。感謝!

» CakePHP のおいしい食べ方

あとPDFでCakePHPのさまざまな紹介資料をアップしているサイトも発見。こちらのPDFも読ませていただきました。

» CakePHPの何か

あとはCakePHPはこんなに簡単!ということを示したムービーも発見。Railsの紹介ビデオ同様、インパクトがありますね。

» 10分で作るCakePHPアプリ for Windows – p4life

そして最後にこれは忘れてはいけません。「レファレンスがPDFで読めないかなぁ」と思っていたら読者の方に教えていただきました(コメント欄で教えていただいた皆様感謝!)。これはすばらしいです!早速DLしました。

» hetimaの日記 – CakePHP ドキュメント日本語訳の pdf

■ 青い人からの突っ込みに関して

前回の記事に早速青い人から突っ込みがはいりました。

» Re: CakePHP日記 #006 ディレクトリ構成とDB設計 : akiyan.com

いくつか。

まずはフォルダ構成。完璧に間違えていましたw。webadmin以下のcodexcode.comにCakePHPを入れたので正確には以下のとおりです。

/home/webadmin/codexcode.com
    /app
        /webroot ← DocumentRootに設定。
    /cake
    /vendors
    .htaccess
    index.php
    VERSION.txt

次にDB設計。いろいろ突っ込みをいれてもらい、かなりテンションあがりました。プロにこんな指導受けて感謝感激!きっちりお礼しなくちゃ。いつものやつ(謎)でいいよね、青い人!

結局出来上がったSQLはこちら。

  • Users
  • DROP TABLE IF EXISTS users;
    CREATE TABLE users (
        id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50),
        email VARCHAR(255) BINARY NOT NULL UNIQUE,
        pwd VARCHAR(255),
        profile TEXT,
        created DATETIME DEFAULT NULL,
        modified DATETIME DEFAULT NULL
    );
    INSERT INTO users (name,email,pwd) values ('taguchi','taguchi@foo.com','taguchipwd');
    INSERT INTO users (name,email,pwd) values ('akiyan','akiyan@foo.com','akiyanpwd');
    

    BINARY属性とか知らんかった・・・。便利ね。UNIQUEもつけないと駄目ですな。ちなみにUNIQUEにはNOT NULLを入れたけどそれでいいよね?

  • Posts
  • DROP TABLE IF EXISTS posts;
    CREATE TABLE posts (
        id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        user_id INT UNSIGNED,
        title TEXT,
        body TEXT,
        created DATETIME DEFAULT NULL,
        modified DATETIME DEFAULT NULL,
        KEY user_id_created (user_id, created)
    );
    

    こちらは複合インデックスを追加。

  • Friends
  • DROP TABLE IF EXISTS friends;
    CREATE TABLE friends (
        id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        user_id INT UNSIGNED,
        friend_user_id INT UNSIGNED,
        status INT UNSIGNED,
        created DATETIME DEFAULT NULL,
        modified DATETIME DEFAULT NULL,
        UNIQUE KEY user_id_friend_user_id (user_id, friend_user_id),
        KEY user_id_status_modified (user_id, status, modified)
    );
    

    こちらも複合インデックスを追加。いやー、勉強になるなぁ。

さてさて、下準備はこんなところですかね。次ではいよいよscaffoldっちゅうやつにチャレンジしてみます。

ツイッターもやっています!

SPONSORED LINK

  1. No comments yet.

  1. April 4th, 2009