7. protected $table='Sach';
8. }
25
Lƣu ý, lớp mơ hình có tên bằng tiếng Anh trong khi bảng trong cơ sở dữ liệu có tên bằng tiếng Việt. Giáo trình sử dụng phƣơng thức đặt tên này để ngƣời đọc dễ phân biệt lớp mơ hình với bảng dữ liệu.
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
201
Truy vấn dữ liệu
Để lấy tất cả c{c bản ghi trong bảng thuộc cơ sở dữ liệu, sử dụng phƣơng thức
all(). Ví dụ, lệnh
$book = Book::all();
tƣơng đƣơng với truy vấn SQL ‚select * from Sach‛.
Để truy vấn dữ liệu theo điều kiện, sử dụng phƣơng thức where(). Ví dụ, lệnh
$book = Book::where(‘id', ’=’ , 1);
tƣơng đƣơng với truy vấn SQL
‚select * from Sach where id = 1‛;
hay lệnh
$book = Book::where(‘id', '=' , 1) -> value(‘tieude');
tƣơng đƣơng với truy vấn SQL
‚select tieude from Sach where id = 1‛;
Để truy vấn một trƣờng thông tin x{c định của tất cả c{c bản ghi, sử dụng phƣơng thức lists(). Ví dụ, lệnh
$book = Book::lists(‘tieude');
tƣơng đƣơng với truy vấn SQL ‚select tieude from Sach‛;
Có thể sử dụng kết hợp các phƣơng thức (all(), where(), lists(), ...) nhằm tạo ra
c{c truy vấn phức tạp. Ví dụ, c}u lệnh sau đ}y sẽ liệt kê c{c s{ch của t{c giả ‘Nguyen Van A’ xuất bản trƣớc năm 2017:
$book = Book:: where (‘tentacgia’, ’=’ , ’Nguyen Van A’)
-> where (‘namxb’, ’<’ , ’2017’)->all();
Để giới hạn số lƣợng bản ghi, sử dụng phƣơng thức take(). Ví dụ, c}u lệnh sau lấy 5 cuốn s{ch của t{c giả ‘Nguyen Van A’:
$book = Book::where(‘tentacgia’,’=’,’Nguyen Van A’)
->take(5)->get();
Để sắp xếp dữ liệu đƣợc truy vấn, sử dụng phƣơng thức orderBy(). Ví dụ, câu
lệnh sau sắp xếp c{c s{ch giảm dần theo năm xuất bản:
$book = Book:orderBy(‘namxb’,’desc’)->get();
Eloquent còn cung cấp c{c phƣơng thức để thực hiện c{c h|m kết tập (aggregate) nhƣ đếm số lƣợng (count), tìm gi{ trị lớn nhất (maximize), tìm gi{ trị nhỏ
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
202
nhất (minimize), tính tổng (sumarize), tính gi{ trị trung bình (average). Ví dụ, câu lệnh sau đ}y đếm số sách của tác giả 'Nguyen Van A':
$c = Book::where(‘tentacgia’,’=’,’Nguyen Van A’)->count();
Thêm mới, cập nhật dữ liệu
Để thêm một bản ghi mới vào cơ sỡ dữ liệu, phƣơng thức save() đƣợc sử dụng. Ví dụ, đoạn mã sau đ}y thêm một cuốn sách mới vào bảng Sach.
1. <?php
2. // Tệp SomeFile.php 3. use App\Book; 3. use App\Book;
4. $book = new Book();
5. $book->id = '10';
6. $book->tieude = 'Khơi nguồn sáng tạo';
7. $book->save();
Cập nhật dữ liệu cũng đƣợc thực hiện bằng phƣơng thức save(), nhƣng thay vì
tạo mới một đối tƣợng mơ hình, ứng dụng cần tìm đến đúng đối tƣợng mơ hình
cần cập nhật. Ví dụ, đoạn mã lệnh sau đ}y sửa đổi tiêu đề của cuốn sách có mã là
‘10’ trong bảng Sach.
1. <?php
2. // Tệp SomeFile.php 3. use App\Book; 3. use App\Book;
4. $book = Book::find(10);
5. $book->tieude = 'Rèn luyện kỹ năng sáng tạo';
6. $book->save();
Xóa dữ liệu
Để xo{ dữ liệu, có thể sử dụng phƣơng thức destroy() hoặc delete(). Ví dụ, đoạn
mã sau thực hiện xóa cuốn sách có mã là '10'. 1. <?php
2. // Tệp SomeFile.php 3. use App\Book; 3. use App\Book;
4. $book = Book::find(10);
5. $book->delete();
6. // Có thể thực hiện lệnh Book::destroy(10); thay cho hai câu lệnh trên.
10.2.6. Thiết lập quan hệ giữa các mơ hình
Trong thực tế, ứng dụng ln cần truy vấn thơng tin từ nhiều bảng dữ liệu có quan hệ với nhau. Để thuận tiện trong việc c|i đặt, thay vì ngƣời lập trình phải viết c{c c}u lệnh truy vấn từ nhiều bảng dữ liệu, Laravel cung cấp c{c phƣơng thức để thiết lập quan hệ giữa c{c đối tƣợng mơ hình. C{ch thức thực hiện các quan hệ cơ bản (một–một, một–nhiều, và nhiều–nhiều) đƣợc trình bày ngay sau đ}y:
Quan hệ một–một
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
203 sở hữu của một đọc giả. Để thiết lập quan hệ một-một giữa hai mơ hình Reader (đọc giả, tƣơng ứng bảng Docgia trong cơ sở dữ liệu) và Card (thẻ đọc, tƣơng ứng
bảng Thedoc trong cơ sở dữ liệu), ứng dụng có thể cung cấp phƣơng thức card()
cho mơ hình Reader v|/hoặc phƣơng thức reader() cho mơ hình Card. Phƣơng thức
card() của mơ hình Reader cho biết thẻ của một đọc giả. Ngƣợc lại, phƣơng thức
reader() của mơ hình Card cho biết chủ sở hữu của một thẻ. Mã nguồn định nghĩa
quan hệ card() và reader() nhƣ sau (với giả thiết các bảng Docgia và Thedoc đều có khóa chính có tên là id cho biết mã đọc giả hay mã thẻ đọc, tƣơng ứng, bảng
Thedoc có khóa ngoại madg liên kết đến trƣờng id của bảng Docgia):
1. <?php
2. // Tệp app/Models/Reader.php 3. namespace App\Models; 3. namespace App\Models;