-----
Phần x2. CakePHP2
– Tạo CSDL MVC
Xem clip về phân tích, thiết kế cơ sở dữ liệu (clip số 4 –
chickenrainshop):
Đây là đoạn mã để tạo các bảng của cơ sở dữ liệu, import vào
cơ sở dữ liệu để làm các bước tiếp theo. Cách làm: nếu chưa tạo cơ sở dữ liệu
cho dự án này, thì vào phpmyadmin, tạo cơ sở dữ liệu mới, đặt tên là chickenrainshop,
chép (copy) toàn bộ đoạn mã dưới đây, mở một tập tin mới trong Sublime Text (hoặc một
editor bất kì), dán (paste) vào đó, lưu lại với tên là database.sql, rồi import vào cơ sở dữ liệu
chickenrainshop.
drop table if exists books;
drop table if exists books_writers;
drop table if exists categories;
drop table if exists comments;
drop table if exists coupons;
drop table if exists groups;
drop table if exists orders;
drop table if exists users;
drop table if exists writers;
/*--table books--*/
create table books
(
id int
not null auto_increment,
category_id int,
title varchar(100)
not null,
slug varchar(255)
not null,
image varchar(255),
info text
not null,
price int not
null,
sale_price int not null,
publisher varchar(100) not
null,
publish_date date not null,
link_download varchar(255) not null,
published
bool
default 0,
created datetime,
modified datetime,
primary
key (id)
);
/*--table books_writers--*/
create table books_writers
(
book_id int not null,
writer_id int not null,
primary
key (book_id, writer_id)
);
/*--table categories--*/
create table categories
(
id int
not null auto_increment,
name varchar(100)
not null,
slug varchar(255)
not null,
description
text,
created datetime,
primary
key (id)
);
/*--table comments--*/
create table comments
(
id int
not null auto_increment,
user_id int not
null,
book_id int not null,
content text not
null,
created datetime,
primary
key (id)
);
/*--table coupons--*/
create table coupons
(
id int
not null auto_increment,
code varchar(255)
not null,
percent float(3)
not null,
description
text,
time_start datetime not null,
time_end datetime not
null,
created datetime,
modified datetime,
primary
key (id)
);
/*--table groups--*/
create table groups
(
id int
not null auto_increment,
name
varchar(100)
not null,
percent float(3)
not null,
description
text,
created datetime,
primary
key (id)
);
/*--table orders--*/
create table orders
(
id int
not null auto_increment,
user_id int not
null,
customer_info text not null,
orders_info text not null,
payment_info text not null,
status int
default 1,
created datetime,
modified
datetime,
primary
key (id)
);
/*--table users--*/
create table users
(
id int
not null auto_increment,
group_id int not null,
username varchar(100)
not null,
password varchar(100)
not null,
email varchar(100)
not null,
firstname varchar(100)
not null,
lastname varchar(100)
not null,
address varchar(255),
phone_number char(13),
created datetime,
modified
datetime,
primary
key (id)
);
/*--table writers--*/
create table writers
(
id int
not null auto_increment,
name varchar(100)
not null,
slug varchar(255)
not null,
biography text,
created datetime,
primary
key (id)
);
Sinh mã của dự án theo mô hình MVC.
Vì cơ sở dữ liệu đã được đặt tên theo quy ước của CakePHP,
nên có thể sử dụng cake console để
sinh mã tự động cho các chức năng cơ bản.
Mở cửa sổ dòng lệnh, chuyển tới thư mục của dự án, ví dụ: E:\webroot\chickenrainshop nhập lệnh
sau: cake bake all
Màn hình sẽ hiển thị tên của các model mà hệ thống có thể sinh
mã, ví dụ:
1. Book
2. BooksWriter
3. Category
4. Comments
5. Coupons
6. Groups
7. Orders
8. Users
9. Writers
Nhập từng số ở danh sách trên để sinh mã tự động. Lưu ý: xong
mỗi model sẽ gõ lại cake bake all và nhập số kế tiếp, do books_writers là bảng
phụ nên sẽ không cần sinh mã cho bảng này.
Sau khi chạy xong các lệnh cake bake all, Cake console sẽ tạo ra các model, view, controller
tương ứng trong dự án chickenrainshop, vào Sublime Text, mở dự án ra để kiểm
tra.
Cấu trúc thư mục của một dự án CakePHP, và quy ước đặt tên, đọc
thêm tại đây: https://kysutho.com/cakephp-bai-3-cau-truc-thu-muc-va-cac-quy-uoc-chung/
Để ý các thư mục sẽ làm việc nhiều với nó là: Config,
Controller, Model, View và webroot.
Xem thêm (clip số 5 – chickenrainshop): https://www.youtube.com/watch?v=2hs2peT_qwU&list=PLCAoQYeCcECgTO5zuWfh5rHj7sqVMu73E&index=5
Nhập dữ liệu mẫu vào để lập trình các chức năng.
Hoặc có thể tải một ít dữ liệu mẫu tại đây:
Hình ảnh:
-----------
Cập nhật 22/4/2017
-----------