Class Book extends Mode l{

Một phần của tài liệu Giáo trình Phát triển ứng dụng web: Phần 2 - Lê Đình Thanh, Nguyễn Việt Anh (Trang 116 - 119)

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;

Một phần của tài liệu Giáo trình Phát triển ứng dụng web: Phần 2 - Lê Đình Thanh, Nguyễn Việt Anh (Trang 116 - 119)

Tải bản đầy đủ (PDF)

(126 trang)