Ngu ngơ học làm web (x3) - CakePHP2 - MVC Layout Truy vấn

Tiếp theo của: Ngu ngơ học làm web (x2) - CakePHP2 – Tạo CSDL  MVC
-----

Phần X3. CakePHP2 – MVC Layout Truy vấn

Xem (clip số 6 – chickenrainshop):

Cách gọi và truyền tham số cho action của một controller (phút 2:25).

Nhớ lại mô hình MVC, quá trình xử lý logic của một ứng dụng web sẽ bắt đầu từ giao diện website của người dùng (client), cụ thể trong ví dụ ở đây là bắt đầu từ thanh địa chỉ URL, dữ liệu sẽ được gửi từ client về controller qua URL (client gửi request về server bằng phương thức get), sau đó controller xử lý và trả lại kết quả về cho view, hệ thống sẽ gửi view này về lại trình duyệt. Xem thêm hình dưới đây (https://book.cakephp.org/2.0/en/getting-started/a-typical-cakephp-request.html)



Đọc thêm để hiểu về hoạt động của mô hình MVC tại đây: https://techmaster.vn/posts/33903/giai-thich-ve-mo-hinh-mvc

Giới thiệu về việc xây dựng các chức năng người dùng và các chức năng quản trị của một website (phút 4:40).

Định dạng URI của chức năng người dùng, và chức năng quản trị (phút 6:51):

- Chức năng người dùng: /controller/action

- Chức năng quản trị: /admin/controller/action

Cách đặt tên action và view:

- Chức năng người dùng:  function index(), index.ctp

- Chức năng quản trị: function admin_index(), admin_index.ctp

Sử dụng layout (phút 8:36):

- Chức năng người dùng:  default.ctp

- Chức năng quản trị: admin.ctp

Giới thiệu về layout và hoạt động của layout (phút 9:15).

Layout: là bố cục mặc định cho trang web, là cái khung cho các trang web, các trang web cùng sử dụng một layout sẽ có bố cục giống nhau và chỉ khác nhau phần nội dung riêng của từng trang, xem lại cái hình bên trên sẽ dễ hiểu hơn.

Phần nội dung riêng của từng trang (từng view) sẽ được gọi bằng lệnh:

<?php echo $this->fetch(‘content’); ?> //nội dung của view sẽ được đặt tại vị trí của câu lệnh này

Xem (clip số 7 – chickenrainshop):

Hai hàm dùng để truy vấn dữ liệu là: find và query (phút 0:00)

- find():

Gồm các kiểu (type) sau:

+ all: lấy tất cả các mẩu tin

+ first: lấy mẩu tin đầu tiên

+ list: giống all, tuy nhiên chỉ trả về danh sách id (cộng thêm trường title hoặc name), tùy chọn này thường được sử dụng để lấy dữ liệu từ một bảng và đưa ra element select của HTML (trong view).

+ count: trả về số mẩu tin thỏa yêu cầu

+ neighbor: trả về mẩu tin đứng trước và sau

+ threaded: dữ liệu có cấu trúc cây (dùng trong tree behavior)

Các tùy chọn của hàm find():

+ fields: tên trường muốn lấy

+ conditions: điều kiện lấy

+ order: sắp xếp kết quả truy vấn

+ limit: giới hạn số lượng mẩu tin lấy

+ recursive: lấy theo mối quan hệ giữa các bảng, -1,0,1,2

- query(): cú pháp query(“SQL statement”)

Thực hành truy vấn trên CakePHP (phút 3:30)

Sử dụng hàm pr() và exit để xem kết quả truy vấn, giúp debug và thực hiện các xử lý trên dữ liệu. (phút 4:11).

Ví dụ về recursive (phút 7:05):

-1: chỉ lấy dữ liệu của bảng hiện tại

0: hiển thị thêm dữ liệu của bảng mà bảng hiện tại có quan hệ “belongsTo”

1: là giá trị mặc định, giống với giá trị 0, ngoài ra hiển thị thêm dữ liệu của bảng có quan hệ 
“hasMany” với bảng hiện tại.

2: tùy chọn này ít khi dùng, lấy tất cả dữ liệu mà hệ thống tìm được.

Ví dụ về các tùy chọn truy vấn (phút 9:52)

Hàm truyvan(),

public function truyvan(){
                        $books = $this->Book->find('first', [
                                    'recursive' => -1,
                                    'fields' => ['id', 'title']
                                    ]);
                        pr($books);exit;
            }

Thêm điều kiện truy vấn, lấy cuốn sách có id = 2

public function truyvan(){
                        $books = $this->Book->find('first', [
                                    'recursive' => -1,
                                    'fields' => ['id', 'title'],
                                    'conditions' => [
                                                            'id' => '2'
                                                ]
                                    ]);
                        pr($books);exit;
            }

Thêm điều kiện truy vấn, lấy các cuốn sách có id <= 2

public function truyvan(){
                        $books = $this->Book->find('all', [
                                    'recursive' => -1,
                                    'fields' => ['id', 'title'],
                                    'conditions' => [
                                                            'id <=' => '2'
                                                ]
                                    ]);
                        pr($books);exit;

            }
-----------
Cập nhật 22/4/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web