Bài 4: Làm vi c v i Database trong
Yii framework
Bài 4: Làm vi c v i Database trong Yii
M c tiêu bài h c
Gi i thi u t ng quan v Database trong Yii framework
Tìm hi u các v n :
•
i t ng truy c p database
• S d ng Query Builder
• S d ng Active Record
• Quan h trong Active Record
• Di chuy n C s d li u
Bài 4: Làm vi c v i Database trong Yii
2
Gi i thi u Database trong
Yii framework
Bài 4: Làm vi c v i Database trong Yii
3
Database trong Yii?
c xây d ng trên nh c a
i t ng PDO,
i t ng truy
c p d li u trong Yii (DAO) cho phép truy c p vào nhi u h
qu n tr c s d li u khác nhau trên cùng m t giao di n
u i m: có th d dàng chuy n qua DBMS khác mà không
c n s a mã truy c p d li u
Yii Query Builder cung c p ph ng pháp h ng
i t ng
xây d ng các truy v n SQL, giúp gi m nguy c t n công
b i SQL injection.
Yii Active Record (AR) th c hi n nh m t cách ti p c n r ng
rãi thông qua Object-Relational Mapping (ORM), ti p t c
n gi n hoá l p trình c s d li u.
Yii AR lo i b công vi c l p i l p l i vi t nh ng câu l nh
SQL mà ch y u s d ng CRUD (create, read, update, delete)
Bài 4: Làm vi c v i Database trong Yii
4
it
ng truy c p d li u
Yii framework
Bài 4: Làm vi c v i Database trong Yii
5
it
ng truy c p d li u trong Yii?
i t ng truy c p d li u (DAO) cung c p m t API chung
truy c p d li u
c l u tr trong nhi u h th ng
qu n lý c s d li u khác nhau (DBMS)
Yii DAO bao g m các l p sau:
•CDbConnection: i di n cho m t k t n i n m t c
s d li u.
•CDbCommand: i di n cho m t câu l nh SQL
th c
hi n i v i m t c s d li u.
•CDbDataReader:
i di n cho m t dòng chuy n ti p
ch s c a các hàng t m t t p h p k t qu truy v n.
•CDbTransaction: i di n cho m t giao d ch DB.
Bài 4: Làm vi c v i Database trong Yii
6
Xây d ng k t n i c s d li u trong Yii?
Có th s d ng các lo i CSDL v i chu i k t n i sau:
T o k t n i nh sau:
Bài 4: Làm vi c v i Database trong Yii
7
Xây d ng k t n i c s d li u trong Yii?
s d ng database, ta c n c u hình nh
main.php
sau trong
truy c p vào database, ta dùng câu l nh: Yii::app()->db
Bài 4: Làm vi c v i Database trong Yii
8
Th c thi các câu l nh
Yii framework
Bài 4: Làm vi c v i Database trong Yii
9
Xây d ng k t n i c s d li u trong Yii?
Khi m t k t n i c s d li u
c thi t l p, các câu l nh SQL
có th
c th c hi n b ng cách s d ng CDbCommand.
Ví d v i câu l nh t o:
G i CDbConnection :: createCommand () v i câu l nh SQL
quy nh:
Bài 4: Làm vi c v i Database trong Yii 10
Xây d ng k t n i c s d li u trong Yii?
th c thi câu l nh qua CDbCommand có 2 cách:
execute(): th c hi n các câu l nh Insert, Update, Delete. N u
thành công s tr v s l ng các dòng b nh h ng
query(): th c hi n câu l nh Select tr v các dòng d li u.
N u thành công s tr v m t th hi n c a CDbDataReader.
Ngoài ra ta còn có th dùng queryXXX()
Bài 4: Làm vi c v i Database trong Yii 11
c d li u t k t qu truy v n trong Yii?
Ta dùng CDbDataReader::read()
c t ng dòng d li u
t k t qu truy v n CDbCommand::query()
L u ý: Không gi ng nh query(), queryXXX() tr l i d li u
tr c ti p. Ví d , queryRow() tr v m t m ng i di n cho
hàng u tiên c a k t qu truy v n.
Bài 4: Làm vi c v i Database trong Yii 12
S d ng giao d ch trong Yii?
Khi m t ng d ng th c thi m t vài câu truy v n, m i l n
c ho c ghi thông tin trong c s d li u,
m b o
r ng c s d li u không sai v i các truy v n th c hi n thì
m t giao d ch m b o toàn v n câu l nh s
c s d ng
s d ng giao d ch chúng ta s d ng CDbTransaction
S d ng giao d ch trong các tr ng h p sau:
•B t u giao d ch.
•Th c hi n truy v n t ng b c m t: B t k c p nh t nào vào
c s d li u u không th nhìn th y.
•Cam k t giao d ch: C p nh t s
c hi n th trong CSDL
n u giao d ch thành công.
•N u m t trong nh ng truy v n không thành công, toàn b
giao d ch
c cu n l i (roll back)
Bài 4: Làm vi c v i Database trong Yii 13
S d ng giao d ch trong Yii?
Ví d :
Bài 4: Làm vi c v i Database trong Yii 14
S d ng tham s trong Yii?
Ta s d ng 2 ph ng th c sau:
•CDbCommand::bindParam()
•CDbCommand::bindValue()
Bài 4: Làm vi c v i Database trong Yii 15
G n k t v i c t d li u trong Yii?
Khi l y k t qu truy v n, ng i ta c ng có th liên k t các
c t v i các bi n PHP
l y d li u.
Bài 4: Làm vi c v i Database trong Yii 16
S d ng Query Builder
Yii framework
Bài 4: Làm vi c v i Database trong Yii 17
Query Builder trong Yii?
Ví d
Truy v n và gán tham s :
Bài 4: Làm vi c v i Database trong Yii 18
Chu n b Query Builder trong Yii?
Chu n b câu l nh:
K t qu truy v n d li u:
select(): xác nh câu l nh truy v n
selectDistinct(): xác nh truy v n và b t c DISTINCT
from(): xác nh truy v n t b ng nào
where(): xác nh i u ki n WHERE c a câu truy v n
andWhere (): g n thêm i u ki n WHERE
Bài 4: Làm vi c v i Database trong Yii 19
Chu n b Query Builder trong Yii?
K t qu truy v n d li u:
orWhere(): g n thêm i u ki n WHERE c a truy v n v i toán t OR
join(): thêm các b ng c n join
leftJoin(): thêm b ng left join
rightJoin(): thêm b ng right join
crossJoin(): thêm b ng cross join
group(): xác nh GROUP BY m t ph n c a truy v n
having(): quy nh c th ph n HAVING c a truy v n
order(): xác nh ORDER BY m t ph n c a truy v n
limit(): xác nh LIMIT c a các truy v n
offset(): xác nh m t ph n OFFSET c a các truy v n
union(): g n thêm m t o n truy v n UNION
Bài 4: Làm vi c v i Database trong Yii 20
Select, selectDistinct trong Yii?
Ví d
Bài 4: Làm vi c v i Database trong Yii 21
i u ki n Where, andWhere, orWhere trong Yii?
Ví d
Bài 4: Làm vi c v i Database trong Yii 22
i u ki n Where, andWhere, orWhere trong Yii?
Ví d
andWhere
orWhere
Bài 4: Làm vi c v i Database trong Yii 23
i u ki n order, limit, offset trong Yii?
Order
Limit và offset
Bài 4: Làm vi c v i Database trong Yii 24
i u ki n join trong Yii?
Join
Bài 4: Làm vi c v i Database trong Yii 25