Thứ Tư, 8 tháng 8, 2018

PHP - Mô hình & Cơ sở dữ liệu

Mô hình đóng một vai trò quan trọng trong khung công tác web Lập trình PHP. Nó đại diện cho các thực thể nghiệp vụ của ứng dụng. Chúng được cung cấp bởi khách hàng hoặc được lấy từ cơ sở dữ liệu phụ trợ, thao tác theo các quy tắc nghiệp vụ và tiếp tục tồn tại trở lại vào cơ sở dữ liệu. Chúng ta hãy tìm hiểu về các mô hình và cách chúng tương tác với hệ thống back-end trong chương này.

Tạo mô hình

Trong PHP, mô hình đơn giản là lớp PHP mở rộng được xây dựng sẵn trong lớp Mô hình. Theo mặc định, các mô hình có thể được thêm tiền tố với Model_ tương tự như các bộ điều khiển và phải được đặt trong nhiên liệu / ứng dụng / lớp / mô hình / thư mục. Hãy để chúng tôi tạo ra một mô hình nhân viên cơ bản và mở rộng nó khi chúng tôi tiến hành.

nhiên liệu / ứng dụng / lớp / mô hình / employee.php
<?php 
   namespace Model; 

   class Model_Employee extends \Model { 
      public static function fetchAll() { 
         // Code to fetch employee from database 
      } 
   }

Truy cập Mô hình

Một khi mô hình được xác định, nó có thể được sử dụng một cách tự do trong bất kỳ bộ điều khiển nào chỉ bằng cách bao gồm nó trong bộ điều khiển như sau.
use \Model\Employee; 

class Controller_Employee extends Controller { 
   public function action_index() { 
      $employees = Employee::fetchAll(); 
   } 
}

Tổng quan cơ sở dữ liệu

PHP cung cấp lớp trừu tượng cơ sở dữ liệu của riêng nó để lấy dữ liệu từ cơ sở dữ liệu. Nó cung cấp cả cơ bản cũng như công cụ dựa trên ORM nâng cao. Bộ công cụ cơ bản bao gồm các lớp DB, DBUtil và Query_Builer. Bộ công cụ tiên tiến là Orm. Bộ công cụ Orm có nguồn gốc từ bộ công cụ cơ sở và được đóng gói như một gói riêng biệt.

Cấu hình cơ sở dữ liệu

PHP tách cài đặt cơ sở dữ liệu khỏi tệp cấu hình chính và tệp là fuel / app / config / db.php . Nó hỗ trợ một thiết lập riêng cho từng môi trường. Hiện tại, PHP hỗ trợ các trình điều khiển MySQL, MySQLi và PDO. Cài đặt mẫu như sau:
<?php  
   return array ( 
      'development' => array ( 
         'type'           => 'mysqli', 
         'connection'     => array ( 
            'hostname'    => 'localhost', 
            'port'        => '3306', 
            'database'    => 'tutorialspoint_fueldb', 
            'username'    => 'root', 
            'password'    => 'password', 
            'persistent'  => false, 
            'compress'    => false, 
         ), 
         
         'identifier'     => '`', 
         'table_prefix'   => '', 
         'charset'        => 'utf8', 
         'enable_cache'   => true, 
         'profiling'      => false, 
         'readonly'       => false, 
      ), 
   )

Bộ công cụ dựa trên DB

Lớp DB là tùy chọn đơn giản nhất để truy cập cơ sở dữ liệu từ ứng dụng php. Nó cung cấp các tùy chọn để xây dựng truy vấn cơ sở dữ liệu, thực thi nó với cơ sở dữ liệu đích và cuối cùng lấy kết quả. Lớp DB tương tác với các lớp sau và cung cấp một API cơ sở dữ liệu toàn diện.

Database_Connection - Singleton và lớp chính để tương tác với cơ sở dữ liệu

Database_Query - Lớp cơ sở, cụ thể để thực hiện truy vấn SQL và tìm nạp kết quả

Database_Query_Builder - Lớp cơ sở, trừu tượng để xây dựng truy vấn SQL

Database_Query_Builder_Join - Lớp để xây dựng các phép nối SQL

Database_Query_Builder_Where - Lớp trừu tượng để xây dựng các điều kiện truy vấn SQL

Database_Query_Builder_Select - Lớp bê tông để xây dựng truy vấn chọn SQL

Database_Query_Builder_Insert - Lớp trừu tượng để xây dựng truy vấn chèn SQL

Database_Query_Builder_Update - Lớp trừu tượng để xây dựng truy vấn cập nhật SQL

Database_Query_Builder_Delete - Lớp trừu tượng để xây dựng truy vấn xóa SQL

Sơ đồ sau đây mô tả mối quan hệ giữa các lớp và các phương thức được cung cấp bởi các lớp.

ảnh minh họa

API DB

Hãy để chúng tôi tìm hiểu các phương pháp quan trọng nhất có sẵn trong lớp DB trong phần này php.

ví dụ
Mục đích - Tạo và trả về cá thể Database_Connection mới .

Tham số

$ db - Tên kết nối cơ sở dữ liệu được định nghĩa trong tệp cấu hình, tùy chọn.

Trả về - Trả về đối tượng Database_Connection

Ví dụ,
$db = DB::instance(); 
$db = DB::instance('test');

truy vấn

Mục đích - Chuẩn bị câu lệnh SQL đã cung cấp và trả về đối tượng Database_Query, có thể được sử dụng để chèn, cập nhật, xóa hoặc tìm nạp dữ liệu từ cơ sở dữ liệu của PHP.

Tham số

$ query - câu lệnh SQL, có thể chứa các phần giữ chỗ;

$ type - kiểu SQL, tùy chọn (DB :: SELECT, DB :: INSERT, DB :: CẬP NHẬT VÀ DB :: DELETE)

Trả về - Trả về đối tượng Database_Query

Ví dụ,
$query = DB::query('SELECT * FROM 'employees'');

last_query

Mục đích - Để nhận được truy vấn được thực thi cuối cùng

Tham số - Không

Trả về - Trả về truy vấn được thực thi cuối cùng

Ví dụ,
$employees = DB::Select('Select * from 'employee''); 
$sql = DB::last_query();

lựa chọn

Mục đích - Tạo phần chọn của truy vấn

Tham số

$ cột - Danh sách tên cột cơ sở dữ liệu

Trả về - Trả về đối tượng Database_Query_Builder_Select

Ví dụ,
$query = DB::select();              // Select *
$query = DB::select('id', 'name'); // Select id, name 

select_array (DB)

Nó tương tự như chọn ngoại trừ chúng ta có thể gửi cột dưới dạng mảng.
$query = DB::select_array(array('id', 'name')); // Select id, name 

chèn

Mục đích - Tạo phần chèn của truy vấn

Tham số

$ table_name - tên của bảng cơ sở dữ liệu;

$ cột - mảng cột bảng PHP

Trả về - Trả về đối tượng Database_Query_Builder_Insert

Ví dụ,
$query = DB::insert('employee');  // Insert into employee 
$query = DB::insert('employee', array('id', 'name')); // Insert into employee (id, name)

cập nhật

Mục đích - Tạo phần cập nhật của truy vấn

Tham số

$ table_name - tên của bảng cơ sở dữ liệu

Trả về - Trả về đối tượng Database_Query_Builder_Update

Ví dụ,
$query = DB::update('employee'); // update `employee`

xóa bỏ

Mục đích - Tạo phần xóa của truy vấn

Tham số PHP

$ table_name - tên của bảng cơ sở dữ liệu

Trả về - Trả về đối tượng Database_Query_Builder_Delete

Ví dụ
$query = DB::delete('employee');  // delete from 'employee'

API truy vấn

Database_Query cung cấp một tùy chọn để thiết lập kết nối cơ sở dữ liệu, thực hiện truy vấn và lấy kết quả là mảng hoặc đối tượng liên kết. Chúng ta hãy xem các phương thức được cung cấp bởi lớp Database_Query.

set_connection

Mục đích - Để thiết lập cơ sở dữ liệu (chi tiết kết nối cơ sở dữ liệu) để thực hiện truy vấn PHP

Tham số - $ db - tên kết nối cơ sở dữ liệu

Trả về - Trả về đối tượng Database_Query

Ví dụ,
$query = DB::query('DELETE * FROM employee', DB::DELETE); 
$query->set_connection('2nd-db');

param

Mục đích - Để đặt giá trị của tham số được xác định trong đối tượng Truy vấn

Tham số 

$ param - tên thông số;

$ value - giá trị của tham số

Trả về - Trả về đối tượng Database_Query

Ví dụ,
// set some variables
$table = 'employee';
$id = 1;
$name = 'Jon';

// don't use
$query = DB::query('SELECT * FROM '.$table.'. WHERE id = '.$id.' AND name = "'.$name.'"');

// but use
$query = DB::query('SELECT * FROM :tablename WHERE id = :id AND name = :name');
$query->param('tablename', 'employee');
$query->param('id', $id);
$query->param('name', $name);

Phương pháp tương tự

các tham số là một đối tượng tương tự, ngoại trừ nó cung cấp tùy chọn để cung cấp cho nhiều giá trị cùng một lúc.
$query->parameters (array( 
   'tablename' => $table, 
   'id' => $id, 
   'name' => $name 
}); 

trói buộc

Mục đích - Để đặt một biến cho tham số được xác định trong đối tượng Query

Tham số

$ param - tên thông số PHP

$ var - biến để liên kết tham số với

Trả về - Trả về đối tượng Database_Query

Ví dụ,
// bind a query parameter 
$table = 'employee'; 
$query = DB::query('DELETE * FROM :tablename', DB::DELETE); 
$query->bind('tablename', $table);  

// update the variable 
$table = 'employee_salary'; 

// DELETE * FROM `employee_salary`; 
$sql = $query->compile();

biên dịch

Mục đích - Để biên dịch đối tượng truy vấn được định nghĩa trong truy vấn SQL

Tham số

$ db - chuỗi kết nối, tùy chọn

Trả về

Ví dụ,
// assign a value to a query parameter 
$table = 'employee'; 
$query = DB::query('DELETE * FROM :tablename', DB::DELETE); 
$query->param('tablename', $table);

// compile the query, returns: DELETE * FROM employee 
$sql = $query->compile(); 

thi hành

Mục đích - Để thực hiện truy vấn được xác định trong đối tượng Query và trả về kết quả

Tham số

$ db - tên kết nối cơ sở dữ liệu

Trả về - Trả về kết quả php

Ví dụ,
// assign a value to a query parameter 
$table = 'employee'; 
$query = DB::query('DELETE * FROM :tablename', DB::DELETE); 
$query->param('tablename', $table);  

// execute the query 
$query->execute();

as_assoc

Mục đích - Để đặt kiểu trả về làm mảng kết hợp thay vì đối tượng

Tham số - Không

Trả về - Trả về đối tượng hiện tại

Ví dụ,
$query = DB::query('SELECT * FROM employee', DB::SELECT); 
$result = $query->as_assoc()->execute(); 
foreach ($result as $row) { 
   echo $row['id']; 
}

as_object

Mục đích - Để đặt kiểu trả về làm đối tượng thay vì mảng kết hợp

Tham số - Không

Trả về - Trả về đối tượng hiện tại PHP

Ví dụ,
$query = DB::query('SELECT * FROM employee', DB::SELECT); 
$result = $query->as_object()->execute(); 
foreach ($result as $row) { 
   echo $row->id; 
}  

// have ORM model objects return instead 
$result = $query->as_object('Model_Employee')->execute();

API trình tạo truy vấn

Các lớp dựa trên trình xây dựng truy vấn (Query_Builder) cung cấp các tùy chọn để xây dựng các truy vấn SQL động. Nó có bốn lớp, mỗi lớp để chọn (Query_Builder_Select) , chèn (Query_Builder_Insert) , cập nhật (Query_Builder_Update) và xóa (Query_Builder_Delete) truy vấn. Các lớp này được bắt nguồn từ lớp Query_Builder_Where (tùy chọn tạo điều kiện), chính nó bắt nguồn từ Query_Builder , cơ sở của tất cả các lớp.

Chúng ta hãy xem xét các phương thức được cung cấp bởi lớp Query_Builder.

lựa chọn

Mục đích - Để tạo các cột của các truy vấn chọn lọc.

Tham số

$ cột - danh sách các cột, tùy chọn

Trả về - Trả về phiên bản hiện tại

Ví dụ,
$query = DB::select('name')  // select `name` 
$query = DB::select(array('first_name', 'name')) // select `first_name` as `name`

từ

Mục đích - Để tạo chi tiết bảng của các truy vấn chọn

Tham số

$ tables - danh sách các bảng

Trả về - Trả về phiên bản hiện tại

Ví dụ,
$query = DB::select('name')->from('employee') // select `name` from `employee`

Ở đâu

Mục đích - Để tạo điều kiện chọn, chèn và cập nhật truy vấn PHP

Tham số

$ cột - tên cột hoặc mảng ($ column, $ alias);

$ op - toán tử logic, =,! =, IN, GIỮA VÀ NHƯ, tùy chọn;

Giá trị $ - giá trị cột

Trả về - Trả về phiên bản hiện tại

Ví dụ,
$query = DB::select('name')->from('employee')  
$query = $query->where('name', '=', 'Jon'); 
// select `name` from `employee` where `name` = `Jon`;

Phương pháp tương tự

Các phương thức tương tự là where_open (), and_where_open (), or_where_open (), where_close (), and_where_close (), or_where_close (). Chúng tương tự như phương thức where () ngoại trừ việc chúng thêm các từ khóa và dấu ngoặc xung quanh các điều kiện. Sau đây là mã mẫu.
$query = DB::select('*')->from('employee');  
$query->where('email', 'like', '%@gmail.com'); 
$query->or_where_open(); 
$query->where('name', 'Jon'); 
$query->and_where('surname', 'Peter');
$query->or_where_close();  
// SELECT * FROM `employee` WHERE `email` LIKE "%gmail.com" OR 
   (`name` = "Jon" AND `surname` = "Peter")

tham gia

Mục đích - Để tạo các kết nối bảng của các truy vấn chọn lọc

Tham số

$ table - tên bảng hoặc mảng ($ table, $ alias);

$ type - loại tham gia (LEFT, RIGHT, INNER, v.v.)

Trả về - Trả về phiên bản hiện tại

Thí dụ
$query = DB::select('name')->from('employee')->join('employee_salary') 
// select `name` from `employee` JOIN `employee_salary`

trên

Mục đích - Để tạo điều kiện tham gia trong các truy vấn chọn lọc

Tham số

$ c1 - tên bảng hoặc tên bảng có bí danh trong mảng;

$ op - toán tử logic;

$ c2 - tên bảng hoặc tên bảng có bí danh trong mảng

Trả về - Trả về phiên bản hiện tại

Ví dụ,
$query = DB::select('name')->from('employee')->join('employee_salary') 
$query = $query->on('employee.employee_id', '=', 'employee_salary.employee_id') 
// select `name` from `employee` JOIN `employee_salary` on 
// `employee.employee_id` = `employee_salary.employee_id`

Phương pháp tương tự

Các phương thức liên quan là and_on () và or_on (). Chúng tương tự như trên () ngoại trừ việc chúng thêm từ khóa và dấu ngoặc xung quanh các kết nối.

group_by

Mục đích - Để tạo nhóm theo truy vấn

Tham số - cột $ - Tên cột để nhóm kết quả

Trả về - Trả về phiên bản hiện tại

Ví dụ,
$query = DB::select('name')->from('employee')  
$query = $query->group_by('name'); 
// select `name` from `employee` group by `name`

đang có

Mục đích - Để tạo nhóm theo các điều kiện của truy vấn SQL

Tham số - cột $ - tên cột hoặc mảng ($ column, $ alias); $ op - toán tử logic, =,! =, IN, GIỮA VÀ NHƯ, tùy chọn; Giá trị $ - giá trị cột

Trả về - Trả về phiên bản hiện tại

Thí dụ
$query = DB::select('name')->from('employee')
$query = $query->group_by('name');
$query = $query->having('name', '!=', 'Jon');
// select `name` from `employee` group by `name` having `name` != `Jon`

Phương pháp tương tự

Các phương thức tương tự là have_open (), and_having_open (), or_having_open (), having_close (), and_having_close (), or_having_close (). Chúng tương tự như các phương thức có () ngoại trừ việc chúng thêm các từ khóa và dấu ngoặc xung quanh các điều kiện.

cài lại

Mục đích - Để đặt lại truy vấn

Tham số - Không

Trả về - Trả về phiên bản hiện tại

Ví dụ,
$query = DB::select('name')->from('employee')  
$query->reset() 
$query = DB::select('name')->from('employee_salary') 
// select `name` from `employee_salary`

Lớp DBUtil

Lớp DBUtil cung cấp một tùy chọn để quản lý và thực hiện các hoạt động cơ sở dữ liệu thông thường. Một số phương pháp quan trọng như sau:
set_connection - Đặt kết nối mặc định
DBUtil::set_connection('new_database');
create_database - Tạo cơ sở dữ liệu.
DBUtil::create_database('my_database');
drop_database - Thả một cơ sở dữ liệu.
DBUtil::drop_database('my_database');
table_exists - Kiểm tra xem bảng đã tồn tại chưa.
if(DBUtil::table_exists('my_table')) { 
   // Table exists 
} else { 
   // Table does NOT exist, create it! 
} 
drop_table - Thả một bảng.
DBUtil::drop_table('my_table');
create_table - Tạo một bảng.
\DBUtil::create_table ( 
   'users', 
   array ( 
      'id' => array('type' => 'int', 'auto_increment' => true), 
      'name' => array('type' => 'text'), 
   ), 
); 

Bộ công cụ Orm

PHP cung cấp lớp cơ sở dữ liệu nâng cao bằng cách sử dụng khái niệm ORM dựa trên mẫu bản ghi Hoạt động phổ biến . Bộ công cụ được bao gồm trong ứng dụng nhưng không được định cấu hình theo mặc định. Nó được đóng gói như một gói và tên gói là orm. Chúng ta có thể thêm cấu hình sau vào file cấu hình chính, fuel / app / config / config.php để tải bộ công cụ orm.
'always_load' => array ( 
   'packages' => array (
      'orm', 
   ), 
),

Tạo mô hình

Orm cung cấp lớp mô hình cơ sở Orm \ Model. Chúng ta cần mở rộng mô hình của chúng ta bằng mô hình orm để sử dụng các tính năng ORM. Sau đây là mã mẫu.
class Model_Employee extends Orm\Model {}

Cấu hình

Orm cung cấp một bộ cài đặt để định cấu hình mô hình để sử dụng các tính năng ORM. Chúng như sau:

kết nối - Đặt thuộc tính tĩnh _connection trong mô hình để chỉ định tên kết nối.
class Model_Employee extends Orm\Model { 
   protected static $_connection = "production"; 
}
tên bảng - Đặt thuộc tính tĩnh _table_name trong mô hình để chỉ định tên bảng của bảng phụ trợ.
class Model_Employee extends Orm\Model { 
   protected static $_table_name = 'employee'; 
} 
khóa chính - Đặt thuộc tính tĩnh _primary_key trong mô hình để chỉ định khóa chính của bảng phụ trợ.
class Model_Employee extends Orm\Model { 
   protected static $_primary_key = array('id'); 
} 
Cột - Đặt thuộc tính _properties tĩnh trong mô hình để chỉ định các cột của bảng phụ trợ. Nó hỗ trợ data_type, nhãn, xác thực, hình thức elememts, vv
class Model_Employee extends Orm\Model { 
   protected static $_properties = array ( 
      'id',  
      'name' => array ( 
         'data_type' => 'varchar', 
         'label' => 'Employee Name', 
         'validation' => array ( 
            'required',  
            'min_length' => array(3),  
            'max_length' > array(80) 
         ), 
         
         'form' => array ( 
            'type' => 'text' 
         ), 
      ),  

      'age' => array ( 
         'data_type' => 'int', 
         'label' => 'Employee Age', 
         'validation' => array ( 
            'required',  
         ),  
         
         'form' => array ( 
            'type' => 'text' 
         ), 
      ),  
   ); 
}
Điều kiện - Đặt thuộc tính _conditions tĩnh để đặt các điều kiện và thứ tự theo tùy chọn.
class Model_Employee extends Orm\Model { 
   protected static $_conditions = array ( 
      'order_by' => array('id' => 'desc'), 
      'where' => array ( 
         array('is_active', > true), 
      ), 
   ); 
}
Quan sát viên - Orm cung cấp hệ thống sự kiện dựa trên người quan sát để thêm hành vi vào các sự kiện cụ thể.

Để thêm hành vi, trước tiên hãy đặt thuộc tính _observers trong mô hình. Sau đó, xác định hành vi như một lớp và đặt nó trong thuộc tính _observers cùng với các sự kiện. Nếu không có sự kiện nào được chỉ định, hành vi sẽ được gọi cho tất cả các sự kiện. Chúng tôi cũng có thể chỉ định nhiều hành vi.
class Model_Employee { 
   protected static $_observers = array ( 
      'example',  // will call Observer_Example class for all events 
      'Orm\\Observer_CreatedOn' => array ( 
         'events' => array('before_insert'),  
         // will only call Orm\Observer_CreatedOn at before_insert event 
      ) 
   ); 
} 

Tạo nên

Khi chúng ta cấu hình mô hình, chúng ta có thể bắt đầu sử dụng các phương thức ngay lập tức. Orm cung cấp một phương thức lưu để lưu đối tượng vào cơ sở dữ liệu. Chúng ta có thể thiết lập dữ liệu bằng cách sử dụng các thuộc tính được cấu hình như sau:
// option 1 
$new = new Model_Employee(); 
$new->name = 'Jon'; 
$new->save();  

// option 2, use forge instead of new 
$new = Model_Employee::forge();
$new->name = 'Jon'; 
$new->save();  

// option 3, use array for properties 
$props = array('name' => 'Jon'); 
$new = Model_Employee::forge($props); 
$new>save();

Đọc

Orm cung cấp một phương thức, tìm để lấy dữ liệu từ cơ sở dữ liệu và liên kết với đối tượng. phương thức tìm kiếm hoạt động tùy thuộc vào tham số đầu vào. Chúng ta hãy xem xét các tùy chọn khác nhau

bằng khóa chính - Chỉ định khóa chính trả về bản ghi bằng cách khớp với khóa chính của bảng được định cấu hình.
$employee = Model_Employee::find(1);
bản ghi đầu tiên / cuối cùng - Chỉ định 'đầu tiên' hoặc 'cuối cùng' sẽ tìm nạp bản ghi đầu tiên hoặc bản ghi cuối cùng tương ứng. Chúng tôi cũng có thể chuyển đơn đặt hàng theo tùy chọn.
$entry = Model_Employee::find('first'); 
$entry = Model_Article::find('last', array('order_by' => 'id'));
Tất cả - Chỉ định 'tất cả' sẽ tìm nạp tất cả các bản ghi từ bảng được định cấu hình. Chúng tôi có thể chỉ định thứ tự theo tùy chọn cũng như điều kiện.
$entry = Model_Employee::find('all');  
$entry = Model_Article::find ('all', array ( 
   'where' => array ( 
      array ('name', 'Jon'), 
   ), 
   'order_by' => array ('id' => 'desc'), 
));
Chúng tôi có thể sử dụng API truy vấn của bộ công cụ cơ sở dữ liệu cơ bản cùng với mô hình cho tùy chọn tìm kiếm nâng cao như sau.
$query = Model_Employee::query()->where('category_id', 1)->order_by('date', 'desc');
$number_of_employees = $query->count(); 
$latest_employee = $query->max('id'); 
$young_employee = $query->min('age'); 
$newest_employee = $query->get_one(); 
$employees = $query->limit(15)->get();

Cập nhật

Cập nhật mô hình cũng giống như tạo, ngoại trừ việc tạo mô hình mới, chỉ cần tìm nạp mô hình để được cập nhật bằng phương thức tìm, cập nhật thuộc tính và sau đó gọi phương thức lưu như sau.
$entry = Model_Employee:find(4);
$entry->name = 'Peter'; 
$entry->save();

Xóa bỏ

Orm cung cấp phương thức xóa để xóa mô hình. Chỉ cần tìm đối tượng và gọi phương thức xóa.
$entry = Model_Employee:find(4); 
$entry->delete();

Ví dụ làm việc

Hãy tạo một ví dụ làm việc trong chương này để hiểu mô hình và cơ sở dữ liệu.

Tạo một cơ sở dữ liệu

Tạo một cơ sở dữ liệu mới trong máy chủ MySQL, sử dụng lệnh sau đây.
create database tutorialspoint_fueldb
Sau đó, tạo một bảng bên trong cơ sở dữ liệu bằng cách sử dụng lệnh sau đây.
create table employee(id int primary key, name varchar(20), age int not null);

Cấu hình cơ sở dữ liệu

Chúng ta hãy cấu hình cơ sở dữ liệu bằng cách sử dụng tệp cấu hình cơ sở dữ liệu, * fuel / app / config / db.php. Thêm các thay đổi sau để kết nối máy chủ MySQL.
<?php  
   return array ( 
      'development' => array ( 
         'type'           => 'mysqli', 
         'connection'     => array ( 
            'hostname'       => 'localhost', 
            'port'           => '3306', 
            'database'       => 'tutorialspoint_fueldb', 
            'username'       => 'root', 
            'password'       => 'pass', 
            'persistent'     => false, 
            'compress'       => false, 
         ), 
         
         'identifier'     => '`', 
         'table_prefix'   => '', 
         'charset'        => 'utf8', 
         'enable_cache'   => true, 
         'profiling'      => false, 
         'readonly'       => false, 
      ),  
      
      'production' => array ( 
         'type'           => 'mysqli', 
         'connection'     => array ( 
            'hostname'       => 'localhost', 
            'port'           => '3306', 
            'database'       => 'tutorialspoint_fueldb', 
            'username'       => 'root', 
            'password'       => 'pass', 
            'persistent'     => false, 
            'compress'       => false, 
         ), 
         
         'identifier'     => '`', 
         'table_prefix'   => '', 
         'charset'        => 'utf8', 
         'enable_cache'   => true, 
         'profiling'      => false, 
         'readonly'       => false, 
      ), 
   );

Bao gồm gói ORM

Cập nhật tệp cấu hình chính, fuel / app / config / config.php để bao gồm gói ORM bằng cách thêm cấu hình sau đây.
'always_load' => array ( 
   'packages' => array ( 
      'orm' 
   ), 
),

Bây giờ, ORM được bật trong ứng dụng của bạn

Tạo mô hình nhân viên

Tạo một mô hình mới, Nhân viên theo thư mục mô hình “nhiên liệu / ứng dụng / lớp / mô hình” . Nó được định nghĩa như sau.

Employee.php
<?php  
   class Model_Employee extends Orm\Model { 
      protected static $_connection = 'production'; 
      protected static $_table_name = 'employee'; 
      protected static $_primary_key = array('id'); 
      protected static $_properties = array ( 
         'id',  
         'name' => array ( 
            'data_type' => 'varchar', 
            'label' => 'Employee Name', 
            'form' => array (
               'type' => 'text' 
            ), 
         ),  
         
         'age' => array ( 
            'data_type' => 'int', 
            'label' => 'Employee Age', 
            'form' => array ( 
               'type' => 'text' 
            ), 
         ),  
      ); 
   } 

Tạo hành động

Tạo hành động mới, action_model trong bộ điều khiển nhân viên nằm ở fuel / app / classes / controller / employee.php như sau.
class Controller_Employee extends Controller { 
   public function action_model() { 
      
      // db based sql command to delete all employees 
      $query = db::query('delete from `employee`'); 
      $query->execute('production');  
      
      // orm based query to add new employees 
      $model = new model_employee(); 
      $model->name = "john"; 
      $model->age = 25; 
      $model->save();  
      $model = new model_employee(); 
      $model->name = "peter"; 
      $model->age = 20; 
      $model->save(); 
      
      // orm based query to fetch all employee data 
      $data = array(); 
      $data['emps'] = model_employee::find('all');  
      return response::forge(view::forge('employee/model', $data)); 
   } 
} 

Tạo chế độ xem

Bây giờ, hãy tạo một tệp tin view.php tại vị trí “fuel / app / views / employee” . Thêm các thay đổi sau vào tệp.
<ul> 
   <?php 
      foreach($emps as $emp) {  
   ?> 
   <li><?php echo $emp['name']; ?></li> 
   
   <?php 
   } 
   ?> 
</ul> 
Bây giờ, yêu cầu URL, http: // localhost: 8080 / employee / model và nó sẽ tạo ra kết quả sau.

Kết quả

học PHP
ảnh minh họa

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...