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

Mô hình đóng một vai trò quan trọng trong khuôn khổ web FuelPHP. Nó đại diện cho các thực thể kinh doanh của ứng dụng. Chúng được cung cấp bởi khách hàng hoặc được tìm nạp từ cơ sở dữ liệu phụ trợ, được thao tác theo các quy tắc nghiệp vụ và vẫn tồn tại trở lại cơ sở dữ liệu. Hãy để chúng tôi 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 FuelPHP, mô hình chỉ đơn giản là lớp PHP đơn giản mở rộng lớp Mô hình tích hợp sẵn. Theo mặc định, các mô hình có thể có tiền tố là Model_ tương tự như bộ điều khiển và phải được đặt trongfuel/app/classes/model/thư mục. Hãy để chúng tôi tạo một mô hình nhân viên cơ bản và mở rộng nó khi chúng tôi tiếp tục.

Nhiên liệu / ứng dụng / lớp học / mô hình / nhân viên.php

<?php 
   namespace Model; 

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

Truy cập một Mô hình

Khi một mô hình được xác định, nó có thể được sử dụng tự do trong bất kỳ bộ điều khiển nào chỉ bằng cách đưa nó vào 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 về cơ sở dữ liệu

FuelPHP cung cấp lớp trừu tượng cơ sở dữ liệu của riêng mình để lấy dữ liệu từ cơ sở dữ liệu. Nó cung cấp cả công cụ dựa trên ORM cơ bản cũng như nâng cao. Bộ công cụ cơ bản bao gồm các lớp dựa trên DB, DBUtil và Query_Builer. Bộ công cụ nâng cao 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

FuelPHP tách các 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 cài đặt riêng cho từng môi trường. Hiện tại, FuelPHP hỗ trợ 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

Các DB classlà tùy chọn đơn giản nhất để truy cập cơ sở dữ liệu từ ứng dụng. 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ó dựa trên cơ sở dữ liệu đích và cuối cùng là tìm nạp 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 cụ thể để 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.

API DB

Chúng ta hãy tìm hiểu các phương thức quan trọng nhất có sẵn trong lớp DB trong phần này.

ví dụ

  • Purpose- Tạo và trả về thể hiện Database_Connection mới .

  • Parameter -

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

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

Ví dụ,

$db = DB::instance(); 
$db = DB::instance('test');

truy vấn

  • Purpose - Chuẩn bị câu lệnh SQL được cung cấp và trả về đối tượng Database_Query, đối tượng này 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.

  • Parameter -

    • $query - Câu lệnh SQL, có thể chứa trình giữ chỗ;

    • $type - Kiểu SQL, tùy chọn (DB :: SELECT, DB :: INSERT, DB :: UPDATE và DB :: DELETE)

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

Ví dụ,

$query = DB::query('SELECT * FROM 'employees'');

last_query

  • Purpose - Để nhận được truy vấn được thực thi cuối cùng

  • Parameter - Không có

  • Returns - 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

  • Purpose - Tạo phần chọn của truy vấn

  • Parameter -

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

  • Returns - 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)

Tương tự như select ngoại trừ chúng ta có thể gửi các cột dưới dạng mảng.

$query = DB::select_array(array('id', 'name')); // Select id, name

chèn

  • Purpose - Tạo phần chèn của truy vấn

  • Parameter -

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

    • $columns - mảng các cột trong bảng

  • Returns - 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

  • Purpose - Tạo phần cập nhật của truy vấn

  • Parameter -

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

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

Ví dụ,

$query = DB::update('employee'); // update `employee`

xóa bỏ

  • Purpose - Tạo phần xóa của truy vấn

  • Parameter -

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

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

Ví dụ

$query = DB::delete('employee');  // delete from 'employee'

API truy vấn

Database_Querycung 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à tìm nạp kết quả dưới dạng mảng hoặc đối tượng liên kết. Hãy để chúng tôi xem các phương thức được cung cấp bởi lớp Database_Query.

set_connection

  • Purpose - Để đặt cơ sở dữ liệu (chi tiết kết nối cơ sở dữ liệu) để thực thi truy vấn

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

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

Ví dụ,

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

param

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

  • Parameter -

    • $param - tên tham số;

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

  • Returns- 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ự

parameters là một đối tượng tương tự ngoại trừ nó cung cấp tùy chọn để cung cấp nhiều giá trị cùng một lúc.

$query->parameters (array( 
   'tablename' => $table, 
   'id' => $id, 
   'name' => $name 
});

trói buộc

  • Purpose - Đặt một biến thành tham số được xác định trong đối tượng Truy vấn

  • Parameter -

    • $param - tên tham số

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

  • Returns- 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

  • Purpose - Để biên dịch đối tượng truy vấn được xác định thành truy vấn SQL

  • Parameter -

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

  • Returns -

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();

hành hình

  • Purpose - Để thực hiện truy vấn được xác định trong đối tượng Truy vấn và trả về kết quả

  • Parameter -

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

  • Returns - Trả về kết quả

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

  • Purpose - Đặt kiểu trả về là mảng kết hợp thay vì đối tượng

  • Parameter - Không có

  • Returns - 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

  • Purpose - Đặt kiểu trả về là đối tượng thay vì mảng kết hợp

  • Parameter - Không có

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

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 tạo truy vấn (Query_Builder) cung cấp các tùy chọn để tạo 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) các truy vấn. Các lớp này có nguồn gốc từ lớp Query_Builder_Where (tùy chọn tạo điều kiện), bản thân lớp này có nguồn gốc 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

  • Purpose - Để tạo các cột của các truy vấn đã chọn.

  • Parameter -

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

  • Returns - 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ừ

  • Purpose - Để tạo bảng chi tiết của các truy vấn được chọn

  • Parameter -

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

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

Ví dụ,

$query = DB::select('name')->from('employee') // select `name` from `employee`

Ở đâu

  • Purpose - Để tạo các điều kiện của các truy vấn chọn, chèn và cập nhật

  • Parameters -

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

    • $op - các toán tử logic, =,! =, IN, BETWEEN và LIKE, tùy chọn;

    • $value - giá trị cột

  • Returns - 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ư các phương thức where () ngoại trừ việc chúng thêm các từ khóa và dấu ngoặc nhọn xung quanh các điều kiện. Sau đây là một 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

  • Purpose - Để tạo kết hợp bảng của các truy vấn được chọn

  • Parameters -

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

    • $type - kiểu tham gia (LEFT, RIGHT, INNER, v.v.,)

  • Returns - 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

  • Purpose - Để tạo điều kiện kết hợp trong các truy vấn được chọn

  • Parameters -

    • $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

  • Returns - 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ư on () ngoại trừ việc chúng thêm từ khóa và dấu ngoặc nhọn xung quanh các phép nối.

group_by

  • Purpose - Để tạo nhóm theo truy vấn

  • Parameter - $columns - Tên cột để nhóm kết quả

  • Returns - 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ó

  • Purpose - Để tạo nhóm theo điều kiện của truy vấn SQL

  • Parameter - $column - tên cột hoặc mảng ($ column, $ alias); $op - các toán tử logic, =,! =, IN, BETWEEN và LIKE, tùy chọn; $value - giá trị cột

  • Returns - 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 (), have_close (), and_having_close (), or_having_close (). Chúng tương tự như các phương thức have () ngoại trừ việc chúng thêm các từ khóa và dấu ngoặc nhọn xung quanh các điều kiện.

cài lại

  • Purpose - Để đặt lại truy vấn

  • Parameter - Không có

  • Returns - 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 - Đánh rơi cơ sở dữ liệu.
DBUtil::drop_database('my_database');
  • table_exists - Kiểm tra xem một bảng nhất định có tồn tại hay không.
if(DBUtil::table_exists('my_table')) { 
   // Table exists 
} else { 
   // Table does NOT exist, create it! 
}
  • drop_table - Làm rơi 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

FuelPHP cung cấp lớp cơ sở dữ liệu nâng cao sử dụng khái niệm ORM dựa trên Active record pattern. Bộ công cụ được bao gồm trong ứng dụng nhưng không được cấu hình theo mặc định. Nó được đóng gói dưới dạng một gói và tên gói là orm. Chúng tôi có thể thêm cấu hình sau vào tệp 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 tôi cần mở rộng mô hình của mình với mô hình orm để sử dụng các tính năng ORM. Sau đây là một mã mẫu.

class Model_Employee extends Orm\Model {}

Cấu hình

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

connection- Đặt thuộc tính _connection tĩnh trong mô hình để chỉ định tên kết nối.

class Model_Employee extends Orm\Model { 
   protected static $_connection = "production"; 
}

table name- Đặt thuộc tính static _table_name trong model để chỉ định tên bảng của bảng phụ trợ.

class Model_Employee extends Orm\Model { 
   protected static $_table_name = 'employee'; 
}

primary key- Đặt thuộc tính _primary_key tĩnh 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'); 
}

Columns- Đặ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, label, validation, form elememts, v.v.

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' 
         ), 
      ),  
   ); 
}

Conditions- Đặt thuộc tính static _conditions để thiết lập các điều kiện và sắp xếp theo các 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), 
      ), 
   ); 
}

Observers- 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 một 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 tôi cấu hình mô hình, chúng tôi có thể bắt đầu sử dụng các phương pháp 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ể đặt dữ liệu bằng cách sử dụng các thuộc tính đã định 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ào đối tượng. phương thức tìm hoạt động tùy thuộc vào tham số đầu vào. Hãy để chúng tôi xem xét các tùy chọn khác nhau -

by primary key - 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 cấu hình.

$employee = Model_Employee::find(1);

first / last record- 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 hàng theo tùy chọn.

$entry = Model_Employee::find('first'); 
$entry = Model_Article::find('last', array('order_by' => 'id'));

All- Chỉ định 'tất cả' sẽ lấy tất cả các bản ghi từ bảng đã 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 ta 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ừ thay vì tạo một mô hình mới, chỉ cần tìm nạp mô hình cần cập nhật bằng phương thức find, 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 pháp xóa để xóa mô hình. Chỉ cần tìm nạp đố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 cơ sở dữ liệu

Tạo cơ sở dữ liệu mới trong máy chủ MySQL, sử dụng lệnh sau.

create database tutorialspoint_fueldb

Sau đó, tạo một bảng bên trong cơ sở dữ liệu bằng lệnh sau.

create table employee(id int primary key, name varchar(20), age int not null);

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

Hãy để chúng tôi định 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.

'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 trong thư mục mô hình “fuel/app/classes/model”. 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 đặt tại 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 dạng xem model.php Đặt vị trí tại “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ờ, hãy yêu cầu URL, http://localhost:8080/employee/model và nó sẽ tạo ra kết quả sau.

Kết quả