Dữ liệu là huyết thống của hầu hết các ứng dụng. Dữ liệu cần được lưu trữ theo cách có thể được phân tích sâu hơn để cung cấp thông tin chi tiết và tạo điều kiện thuận lợi cho các quyết định kinh doanh. Dữ liệu thường được lưu trữ trong cơ sở dữ liệu. Trong số các mối quan tâm chính khi tương tác với cơ sở dữ liệu là bảo mật, dễ truy cập và triển khai cụ thể của nhà cung cấp cơ sở dữ liệu của Ngôn ngữ truy vấn có cấu trúc (SQL).
Bản ghi hoạt động là một mẫu thiết kế giúp bạn dễ dàng tương tác với cơ sở dữ liệu một cách dễ dàng, an toàn và hùng hồn.
Bản ghi hoạt động có những ưu điểm sau
- Chèn, cập nhật và xóa bản ghi với chuỗi phương pháp đơn giản của bản ghi hoạt động
- Gửi thông tin đầu vào của người dùng một cách an toàn bằng cách sử dụng các tham số
- Cho phép bạn làm việc với nhiều công cụ cơ sở dữ liệu như MySQL, SQL Server, v.v. mà không cần viết lại mã ứng dụng
- CodeIgniter sử dụng trình điều khiển cụ thể cho từng công cụ cơ sở dữ liệu trong nền.
Trong hướng dẫn này, bạn sẽ học:
- Cách sử dụng Active Record: Ví dụ
- Cấu hình cơ sở dữ liệu CodeIgniter
- CodeIgniter Chèn Bản ghi Hoạt động
- CodeIgniter Chọn Bản ghi Hoạt động
- Bản ghi hoạt động cập nhật CodeIgniter
- CodeIgniter Xóa Bản ghi Hoạt động
Cách sử dụng Active Record: Ví dụ
Trong hướng dẫn này, chúng ta sẽ thảo luận về cơ sở dữ liệu hướng dẫn. Chúng ta sẽ có hai bảng, một bảng có đơn đặt hàng, bảng còn lại có thông tin chi tiết.
Hướng dẫn này giả định rằng bạn đã cài đặt và chạy cơ sở dữ liệu MySQL.
Chạy các tập lệnh sau để tạo cơ sở dữ liệu hướng dẫn:
CREATE SCHEMA ci_active_record;USE ci_active_record;CREATE TABLE `order_details` (`id` int(11) NOT NULL AUTO_INCREMENT,`order_id` int(11) DEFAULT NULL,`item` varchar(245) DEFAULT NULL,`quantity` int(11) DEFAULT '0',`price` decimal(10,2) DEFAULT '0.00',`sub_total` decimal(10,2) DEFAULT '0.00',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;CREATE TABLE `orders` (`id` int(11) NOT NULL AUTO_INCREMENT,`date` timestamp NULL DEFAULT NULL,`customer_name` varchar(245) DEFAULT NULL,`customer_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;
Đoạn mã trên tạo một cơ sở dữ liệu có tên ci_active_record và tạo hai bảng là đơn đặt hàng và chi tiết đơn hàng. Mối quan hệ giữa hai bảng được xác định bởi id cột trong đơn hàng và order_id trong bảng order_details.
Cấu hình cơ sở dữ liệu CodeIgniter
Bây giờ chúng ta sẽ cấu hình ứng dụng của mình để có thể giao tiếp với cơ sở dữ liệu này.
Mở tệp cấu hình cơ sở dữ liệu nằm trong application / config / database.php
xác định vị trí các dòng sau trong tệp cấu hình
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Cập nhật mã trên thành sau
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Lưu ý: bạn sẽ cần phải thay thế tên người dùng và mật khẩu phù hợp với cấu hình MySQL của bạn.
Ngoài chi tiết cấu hình cơ sở dữ liệu, chúng ta cũng cần yêu cầu CodeIgniter tải thư viện cơ sở dữ liệu khi nó tải
Bước 1) Mở ứng dụng tệp sau đây / config / autoload.php
Bước 2) Xác định vị trí các thư viện khóa mảng $ autoload và tải thư viện cơ sở dữ liệu như hình dưới đây
$autoload['libraries'] = array('database');
ĐÂY,
- Đoạn mã trên tải thư viện cơ sở dữ liệu khi ứng dụng khởi động
CodeIgniter Chèn Bản ghi Hoạt động
Đối với mục đích thử nghiệm, chúng tôi sẽ tạo một bộ điều khiển và các tuyến được xác định mà chúng tôi sẽ sử dụng để tương tác với ứng dụng của chúng tôi thông qua bản ghi hoạt động.
Tạo một ứng dụng tệp / bộ điều khiển / ActiveRecordController.php mới
Thêm mã sau vào ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
ĐÂY,
- $ data = […] xác định dữ liệu biến mảng sử dụng tên bảng cơ sở dữ liệu làm khóa mảng và gán giá trị cho chúng
- $ this-> db-> insert ('order', $ data); gọi phương thức chèn của thư viện cơ sở dữ liệu, chuyển thứ tự tên bảng và biến mảng $ data làm tham số. Dòng này tạo câu lệnh SQL INSERT bằng cách sử dụng các khóa mảng làm tên trường và giá trị mảng làm giá trị được chèn vào cơ sở dữ liệu.
Bây giờ chúng ta đã tạo thành công phương thức bộ điều khiển cho bản ghi hoạt động, bây giờ chúng ta sẽ cần tạo một tuyến đường mà chúng ta sẽ gọi để thực thi phương thức bộ điều khiển.
Bây giờ hãy mở route.php trong ứng dụng / config / route.php
thêm dòng sau vào các tuyến đường
$route['ar/insert'] = 'activerecordcontroller/store_order';
ĐÂY,
- Chúng tôi định nghĩa một tuyến đường ar / insert gọi store_order của ActiveRecordController.
Bây giờ hãy khởi động máy chủ web để kiểm tra phương pháp của chúng tôi.
Chạy lệnh sau để khởi động máy chủ tích hợp sẵn cho PHP
cd C:\Sites\ci-appphp -S localhost:3000
ĐÂY,
- Trình duyệt lệnh trên vào dòng lệnh và khởi động máy chủ tích hợp tại cổng 3000.
Tải URL sau vào trình duyệt của bạn
http: // localhost: 3000 / ar / insert
Bạn sẽ nhận được kết quả sau
order has successfully been created
Mở cơ sở dữ liệu hướng dẫn MySQL và kiểm tra bảng đơn đặt hàng
Bạn sẽ có thể tạo hàng mới như thể hiện trong hình dưới đây
CodeIgniter Chọn Bản ghi Hoạt động
Trong phần này, chúng ta sẽ thấy cách đọc các bản ghi mà chúng ta có trong cơ sở dữ liệu và hiển thị chúng trong trình duyệt web dưới dạng danh sách không có thứ tự
Thêm phương thức sau vào ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
ĐÂY,
- $ query = $ this-> db-> get ('đơn hàng'); chạy truy vấn chọn đối với bảng đơn đặt hàng, chọn tất cả các trường
- echo "
Danh sách đơn hàng
"; hiển thị tiêu đề HTML có kích thước 3 - echo "
- "; in thẻ mở cho danh sách HTML chưa được sắp xếp
- foreach ($ query-> result () as $ row) {…} đã sử dụng vòng lặp for để lặp qua các kết quả trả về từ cơ sở dữ liệu. echo "
- $ row-> customer_name "; in tên_khách_hàng từ cơ sở dữ liệu
Trước khi tải URL sau, bạn có thể tải thêm một vài bản ghi vào cơ sở dữ liệu.
Bây giờ chúng ta hãy xác định một tuyến đường cho truy vấn SELECT
Mở bảng ứng dụng / config / route.php
Thêm tuyến đường sau
$route['ar'] = 'activerecordcontroller';
ĐÂY,
- Tuyến ar trỏ đến phương thức chỉ mục của lớp ActiveRecordController. Đây là theo mặc định, đó là lý do tại sao chúng tôi không chỉ định phương thức chỉ mục như bạn đã làm cho tuyến chèn các bản ghi
Giả sử máy chủ web đã chạy, hãy tải URL sau
http: // localhost: 3000 / ar
Bạn sẽ có thể thấy các kết quả rất giống với kết quả sau trong trình duyệt web của bạn
Bản ghi hoạt động cập nhật CodeIgniter
Trong phần này, chúng tôi sẽ trình bày về cách sử dụng bản ghi hoạt động để cập nhật cơ sở dữ liệu. Giả sử chúng tôi muốn cập nhật tên khách hàng Joe Thomas thành Joe.
Thêm phương thức sau vào lớp ActiveRecordController
public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}
ĐÂY,
- $ data = […] xác định các trường và giá trị mà chúng tôi muốn cập nhật trong bảng cơ sở dữ liệu
- $ this-> db-> where ('id', 1); đặt mệnh đề where của truy vấn cập nhật
- $ this-> db-> update ('order', $ data); tạo truy vấn cập nhật SQL và thực thi nó trên cơ sở dữ liệu của chúng tôi.
Đoạn mã trên sẽ tạo ra câu lệnh SQL sau
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Bây giờ chúng ta hãy cập nhật ứng dụng route.php / config / route.php
Thêm tuyến đường sau
$route['ar/update'] = 'activerecordcontroller/update_order';
Lưu các thay đổi
Tải URL sau vào trình duyệt web
Bây giờ hãy hiển thị các bản ghi cơ sở dữ liệu và xem liệu các thay đổi có bị ảnh hưởng hay không.
Như bạn có thể thấy từ Hình ảnh đã cho ở trên, bản ghi đầu tiên đã được cập nhật từ Joe Thomas thành Joe.
CodeIgniter Xóa Bản ghi Hoạt động
Bây giờ chúng tôi sẽ xóa một bản ghi khỏi cơ sở dữ liệu. Chúng tôi sẽ xóa bản ghi có id là 3.
Thêm phương thức sau vào ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
ĐÂY,
- $ this-> db-> where ('id', 1); đặt mệnh đề where
- $ this-> db-> delete ('đơn đặt hàng'); xóa hàng cơ sở dữ liệu trong bảng đơn hàng dựa trên tiêu chí được đặt bằng mệnh đề where.
Để thực thi mã trên, hãy tải URL sau vào trình duyệt web của chúng tôi
http: // localhost: 3000 / ar / delete
Tóm lược
Trong hướng dẫn này, bạn đã học cách làm việc với một bản ghi đang hoạt động để chèn, cập nhật, xóa và chọn các bản ghi từ cơ sở dữ liệu. Chúng tôi đã làm việc với các giá trị tĩnh để tạo bản ghi, cập nhật và xóa. Trong hướng dẫn tiếp theo, chúng tôi sẽ tạo một giao diện người dùng mà người dùng có thể sử dụng để tạo các bản ghi động trong cơ sở dữ liệu.