而CakePHP則是相反地,是透過讀取一個既有的(通常是MySQL)資料庫架構,來產生相對的資料模型、控制器與視圖程式碼。因此預先設計並建立好一個資料庫,對於應用CakePHP框架來說非常重要,也比較符合PHP開發者原有的習慣。
Blog資料庫
首先應用之前“Todo”練習建立資料庫的方法,透過phpMyAdmin建立一個“blog”資料庫,以及同名的使用者“blog”並設定權限與密碼。
Blog資料表設計
跟之前“Todo”練習的資料庫只有一個資料表不同,Blog的資料必須分別使用多個資料表來儲存,並透過資料庫的關連功能來取得相關的資料。
第一個是“users”資料表的SQL:
CREATE TABLE `users` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR(100) DEFAULT NULL , `email` VARCHAR(150) DEFAULT NULL , `firstname` VARCHAR(60) DEFAULT NULL , `lastname` VARCHAR(60) DEFAULT NULL , `created` DATETIME DEFAULT NULL , `modified` DATETIME DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;依照CakePHP的命名慣例,“users”資料表名稱必須是複數名詞,主鍵(PRIMARY KEY)名稱是“id”。
第二個是“posts”資料表的SQL:
CREATE TABLE `posts` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT , `title` VARCHAR(255) DEFAULT NULL , `content` TEXT, `user_id` INT(11) DEFAULT NULL , `created` DATETIME DEFAULT NULL , `modified` DATETIME DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;依照CakePHP的命名慣例,“posts”資料表名稱也必須是複數名詞,主鍵(PRIMARY KEY)名稱也是“id”。為了避免混淆並指定關連的資料表,這裡以“user_id”欄位與“users”資料表建立關連性。注意,這裡“user_id”欄位是單數詞。還有跟書上的不同,這裡還是用“created”跟“modified”兩個魔術欄位來自動儲存製作與修改日期。
“users”跟“posts”兩個資料表的關係是所謂的“一對多”,也就是每一位“user”有很多篇的“posts”,但每一篇“post”只屬於一位“user”所有。用RoR框架開發時,要在資料模型程式中指明“user”跟“posts”兩個物件的關係,然後RoR會自動地在資料庫中產生相對的資料表。而用CakePHP開發時,CakePHP則是透過分析“user”跟“posts”兩個資料表,來產生資料模型程式的範本。
上一篇|下一篇:
沒有留言:
張貼留言