FuelPHP-모델 및 데이터베이스

모델은 FuelPHP 웹 프레임 워크에서 중요한 역할을합니다. 응용 프로그램의 비즈니스 항목을 나타냅니다. 고객이 제공하거나 백엔드 데이터베이스에서 가져와 비즈니스 규칙에 따라 조작하고 데이터베이스에 다시 유지합니다. 이 장에서 모델과 모델이 백엔드 시스템과 상호 작용하는 방법에 대해 알아 보겠습니다.

모델 생성

FuelPHP에서 model은 내장 된 Model 클래스를 확장하는 단순한 PHP 클래스입니다. 기본적으로 모델에는 컨트롤러와 유사한 Model_ 접두사가 붙을 수 있으며fuel/app/classes/model/폴더. 기본 직원 모델을 만들고 진행하면서 확장 해 보겠습니다.

fuel / app / classes / model / employee.php

<?php 
   namespace Model; 

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

모델에 액세스

모델이 정의되면 다음과 같이 컨트롤러에 포함하는 것만으로 모든 컨트롤러에서 자유롭게 사용할 수 있습니다.

use \Model\Employee; 

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

데이터베이스 개요

FuelPHP는 데이터베이스에서 데이터를 가져 오기 위해 자체 데이터베이스 추상화 계층을 제공합니다. 기본 및 고급 ORM 기반 도구를 모두 제공합니다. 기본 툴킷은 DB, DBUtil 및 Query_Builer 기반 클래스로 구성됩니다. 고급 툴킷은 Orm입니다. Orm 툴킷은 기본 툴킷에서 파생되며 별도의 패키지로 번들됩니다.

데이터베이스 구성

FuelPHP는 기본 구성 파일에서 데이터베이스 설정을 분리하고 파일은 fuel/app/config/db.php. 각 환경에 대해 별도의 설정을 지원합니다. 현재 FuelPHP는 MySQL, MySQLi 및 PDO 드라이버를 지원합니다. 샘플 설정은 다음과 같습니다.

<?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, 
      ), 
   )

DB 기반 툴킷

그만큼 DB class응용 프로그램에서 데이터베이스에 액세스하는 가장 간단한 옵션입니다. 데이터베이스 쿼리를 작성하고, 대상 데이터베이스에 대해 실행하고, 최종적으로 결과를 가져 오는 옵션을 제공합니다. DB의 클래스 다음의 클래스와 상호 작용은 포괄적 인 데이터베이스 API를 제공한다.

  • Database_Connection − 데이터베이스와 상호 작용하는 싱글 톤 및 메인 클래스

  • Database_Query − SQL 쿼리를 실행하고 결과를 가져 오는 기본, 구체적인 클래스

  • Database_Query_Builder − SQL 쿼리 작성을위한 기본, 추상 클래스

  • Database_Query_Builder_Join − SQL 조인을 작성하는 클래스

  • Database_Query_Builder_Where − SQL 쿼리 조건을 구축하기위한 추상 클래스

  • Database_Query_Builder_Select − SQL 선택 쿼리를 작성하는 구체적인 클래스

  • Database_Query_Builder_Insert − SQL 삽입 쿼리를 작성하기위한 추상 클래스

  • Database_Query_Builder_Update − SQL 업데이트 쿼리를 작성하기위한 추상 클래스

  • Database_Query_Builder_Delete − SQL 삭제 쿼리를 작성하는 추상 클래스

다음 다이어그램은 클래스와 클래스에서 제공하는 메서드 간의 관계를 보여줍니다.

DB API

이 섹션의 DB 클래스에서 사용할 수있는 가장 중요한 방법에 대해 알아 보겠습니다.

  • Purpose− 새로운 Database_Connection 인스턴스를 생성하고 반환합니다 .

  • Parameter

    • $db − 구성 파일에 정의 된 데이터베이스 연결 이름, 선택 사항.

  • ReturnsDatabase_Connection 객체를 반환 합니다.

예를 들면

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

질문

  • Purpose − 제공된 SQL 문을 준비하고 데이터베이스에서 데이터를 삽입, 업데이트, 삭제 또는 가져 오는 데 사용할 수있는 Database_Query 객체를 반환합니다.

  • Parameter

    • $query − SQL 문, 자리 표시자를 포함 할 수 있습니다.

    • $type − SQL 유형, 선택 사항 (DB :: SELECT, DB :: INSERT, DB :: UPDATE 및 DB :: DELETE)

  • ReturnsDatabase_Query 객체를 반환 합니다.

예를 들면

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

last_query

  • Purpose − 마지막으로 실행 된 쿼리를 얻으려면

  • Parameter − 없음

  • Returns − 마지막으로 실행 된 쿼리를 반환합니다.

예를 들면

$employees = DB::Select('Select * from 'employee''); 
$sql = DB::last_query();

고르다

  • Purpose − 쿼리의 선택 부분 생성

  • Parameter

    • $columns − 데이터베이스 열 이름 목록

  • Returns − Database_Query_Builder_Select 객체를 반환합니다.

예를 들면

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

select_array (DB)

열을 배열로 보낼 수 있다는 점을 제외하면 select와 유사합니다.

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

끼워 넣다

  • Purpose − 쿼리의 삽입 부분 생성

  • Parameter

    • $table_name − 데이터베이스 테이블의 이름

    • $columns − 테이블 열 배열

  • Returns − Database_Query_Builder_Insert 객체를 반환합니다.

예를 들면

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

최신 정보

  • Purpose − 쿼리의 업데이트 부분 생성

  • Parameter

    • $table_name − 데이터베이스 테이블의 이름

  • Returns − Database_Query_Builder_Update 객체를 반환합니다.

예를 들면

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

지우다

  • Purpose − 쿼리의 삭제 부분 생성

  • Parameter

    • $table_name − 데이터베이스 테이블의 이름

  • Returns − Database_Query_Builder_Delete 객체를 반환합니다.

예를 들어

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

쿼리 API

Database_Query데이터베이스 연결을 설정하고, 쿼리를 실행하고, 결과를 연관 배열 또는 객체로 가져 오는 옵션을 제공합니다. Database_Query 클래스에서 제공하는 메서드를 살펴 보겠습니다.

set_connection

  • Purpose − 쿼리를 실행할 데이터베이스 (데이터베이스 연결 세부 정보)를 설정하려면

  • Parameter − $ db-데이터베이스 연결 이름

  • ReturnsDatabase_Query 객체를 반환 합니다.

예를 들면

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

매개 변수

  • Purpose − Query 개체에 정의 된 매개 변수 값을 설정하려면

  • Parameter

    • $param − 매개 변수 이름

    • $value − 매개 변수 값

  • ReturnsDatabase_Query 객체를 반환 합니다.

예를 들면

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

유사한 방법

parameters 한 번에 여러 값을 제공하는 옵션을 제공한다는 점을 제외하면 유사한 객체입니다.

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

묶다

  • Purpose − 쿼리 개체에 정의 된 매개 변수에 변수를 설정하려면

  • Parameter

    • $param − 매개 변수 이름

    • $var − 매개 변수를 바인딩 할 변수

  • ReturnsDatabase_Query 객체를 반환 합니다.

예를 들면

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

엮다

  • Purpose − SQL 질의에 정의 된 질의 객체를 컴파일하려면

  • Parameter

    • $db − 연결 문자열, 선택 사항

  • Returns

예를 들면

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

실행하다

  • Purpose − Query 객체에 정의 된 쿼리를 실행하고 결과를 반환하려면

  • Parameter

    • $db − 데이터베이스 연결 이름

  • Returns − 결과를 반환합니다.

예를 들면

// 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 − 반환 유형을 객체 대신 연관 배열로 설정하려면

  • Parameter − 없음

  • Returns − 현재 개체를 반환합니다.

예를 들면

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

as_object

  • Purpose − 반환 유형을 연관 배열 대신 객체로 설정하려면

  • Parameter − 없음

  • Returns − 현재 개체를 반환합니다.

예를 들면

$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

쿼리 작성기 (Query_Builder) 기반 클래스는 SQL 쿼리를 동적으로 작성하는 옵션을 제공합니다. 여기에는 쿼리 를 선택 (Query_Builder_Select) , 삽입 (Query_Builder_Insert) , 업데이트 (Query_Builder_Update) 및 삭제 (Query_Builder_Delete)하는 네 개의 클래스가 있습니다. 이러한 클래스는 Query_Builder_Where 클래스 (조건 생성 옵션)에서 파생되며 , 자체적 으로 모든 클래스의 기본 인 Query_Builder 에서 파생됩니다 .

Query_Builder 클래스에서 제공하는 메서드를 살펴 보겠습니다.

고르다

  • Purpose − 선택 쿼리의 열을 생성합니다.

  • Parameter

    • $columns − 열 목록, 선택 사항

  • Returns − 현재 인스턴스를 반환합니다.

예를 들면

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

...에서

  • Purpose − 선택 쿼리의 테이블 세부 정보를 생성하려면

  • Parameter

    • $tables − 테이블 목록

  • Returns − 현재 인스턴스를 반환합니다.

예를 들면

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

어디

  • Purpose − 쿼리 선택, 삽입 및 업데이트 조건 생성

  • Parameters

    • $column − 열 이름 또는 배열 ($ column, $ alias);

    • $op − 논리 연산자, =,! =, IN, BETWEEN 및 LIKE, 선택 사항;

    • $value − 열 값

  • Returns − 현재 인스턴스를 반환합니다.

예를 들면

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

유사한 방법

유사한 메소드는 where_open (), and_where_open (), or_where_open (), where_close (), and_where_close (), or_where_close ()입니다. 조건 주위에 추가 키워드와 대괄호를 추가한다는 점을 제외하면 where () 메서드와 유사합니다. 다음은 샘플 코드입니다.

$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")

어울리다

  • Purpose − 선택 쿼리의 테이블 조인을 생성하려면

  • Parameters

    • $table − 테이블 이름 또는 배열 ($ table, $ alias);

    • $type − 조인 유형 (LEFT, RIGHT, INNER 등)

  • Returns − 현재 인스턴스를 반환합니다.

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

의 위에

  • Purpose − 선택 쿼리에서 조인 조건을 생성하려면

  • Parameters

    • $c1 − 배열에 별칭이있는 테이블 이름 또는 테이블 이름;

    • $op − 논리 연산자

    • $c2 − 배열에 별칭이있는 테이블 이름 또는 테이블 이름

  • Returns − 현재 인스턴스를 반환합니다.

예를 들면

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

유사한 방법

관련 메소드는 and_on () 및 or_on ()입니다. 조인 주위에 추가 키워드와 대괄호를 추가한다는 점을 제외하면 on ()과 유사합니다.

group_by

  • Purpose − 쿼리별로 그룹을 생성하려면

  • Parameter$columns − 결과를 그룹화 할 열 이름

  • Returns − 현재 인스턴스를 반환합니다.

예를 들면

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

갖는

  • Purpose − SQL 질의 조건으로 그룹 생성하기

  • Parameter$column − 열 이름 또는 배열 ($ column, $ alias); $op − 논리 연산자, =,! =, IN, BETWEEN 및 LIKE, 선택 사항; $value − 열 값

  • Returns − 현재 인스턴스를 반환합니다.

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

유사한 방법

유사한 메소드는 having_open (), and_having_open (), or_having_open (), having_close (), and_having_close (), or_having_close ()입니다. 조건 주위에 추가 키워드와 대괄호를 추가한다는 점을 제외하면 having () 메서드와 유사합니다.

초기화

  • Purpose − 쿼리를 재설정하려면

  • Parameter − 없음

  • Returns − 현재 인스턴스를 반환합니다.

예를 들면

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

DBUtil 클래스

DBUtil 클래스는 일상적인 데이터베이스 작업을 관리하고 수행하는 옵션을 제공합니다. 중요한 방법 중 일부는 다음과 같습니다.

  • set_connection-기본 연결을 설정합니다.
DBUtil::set_connection('new_database');
  • create_database-데이터베이스를 생성합니다.
DBUtil::create_database('my_database');
  • drop_database-데이터베이스를 삭제합니다.
DBUtil::drop_database('my_database');
  • table_exists-주어진 테이블이 존재하는지 확인합니다.
if(DBUtil::table_exists('my_table')) { 
   // Table exists 
} else { 
   // Table does NOT exist, create it! 
}
  • drop_table-테이블을 삭제합니다.
DBUtil::drop_table('my_table');
  • create_table-테이블을 생성합니다.
\DBUtil::create_table ( 
   'users', 
   array ( 
      'id' => array('type' => 'int', 'auto_increment' => true), 
      'name' => array('type' => 'text'), 
   ), 
);

Orm 툴킷

FuelPHP는 널리 사용되는 ORM 개념을 사용하여 고급 데이터베이스 계층을 제공합니다. Active record pattern. 툴킷은 애플리케이션에 포함되어 있지만 기본적으로 구성되지는 않습니다. 패키지로 번들로 제공되며 패키지 이름은 orm입니다. 기본 구성 파일에 다음 구성을 추가 할 수 있습니다.fuel/app/config/config.php orm 툴킷을로드합니다.

'always_load' => array ( 
   'packages' => array (
      'orm', 
   ), 
),

모델 생성

Orm은 기본 모델 클래스 Orm \ Model을 제공합니다. ORM 기능을 사용하려면 orm 모델로 모델을 확장해야합니다. 다음은 샘플 코드입니다.

class Model_Employee extends Orm\Model {}

구성

Orm은 ORM 기능을 사용하도록 모델을 구성하기위한 일련의 설정을 제공합니다. 그들은 다음과 같습니다-

connection− 연결 이름을 지정하려면 모델에서 정적 _connection 속성을 설정합니다 .

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

table name− 모델에서 정적 _table_name 속성을 설정 하여 백엔드 테이블의 테이블 이름을 지정합니다.

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

primary key− 모델에서 정적 _primary_key 속성을 설정 하여 백엔드 테이블의 기본 키를 지정합니다.

class Model_Employee extends Orm\Model { 
   protected static $_primary_key = array('id'); 
}

Columns− 모델에서 정적 _properties 속성을 설정하여 백엔드 테이블의 열을 지정합니다. data_type, label, validation, form elememts 등을 지원합니다.

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− 정적 _conditions 속성을 설정하여 옵션별로 조건 및 순서를 설정합니다.

class Model_Employee extends Orm\Model { 
   protected static $_conditions = array ( 
      'order_by' => array('id' => 'desc'), 
      'where' => array ( 
         array('is_active', > true), 
      ), 
   ); 
}

ObserversOrm 은 특정 이벤트에 동작을 추가 할 수있는 관찰자 기반 이벤트 시스템을 제공합니다. 동작을 추가하려면 먼저 모델에서 _observers 속성을 설정합니다 . 그런 다음 동작을 클래스로 정의하고 이벤트와 함께 _observers 속성 에 설정 합니다. 이벤트를 지정하지 않으면 모든 이벤트에 대해 동작이 호출됩니다. 여러 동작을 지정할 수도 있습니다.

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

창조하다

모델을 구성하고 나면 바로 방법을 사용할 수 있습니다. Orm 은 객체를 데이터베이스에 저장 하는 저장 방법을 제공 합니다. 다음과 같이 구성된 속성을 사용하여 데이터를 설정할 수 있습니다.

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

읽다

Orm은 데이터베이스에서 데이터를 가져 와서 객체에 바인딩하는 방법을 제공합니다. find 메소드는 입력 매개 변수에 따라 작동합니다. 다양한 옵션을 살펴 보겠습니다.

by primary key − 기본 키를 지정하면 구성된 테이블의 기본 키를 일치시켜 레코드를 반환합니다.

$employee = Model_Employee::find(1);

first / last record− 'first'또는 'last'를 지정하면 각각 첫 번째 레코드 또는 마지막 레코드를 가져옵니다. 옵션으로도 주문을 전달할 수 있습니다.

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

All− 'all'을 지정하면 구성된 테이블에서 모든 레코드를 가져옵니다. 옵션 및 조건으로 주문을 지정할 수 있습니다.

$entry = Model_Employee::find('all');  
$entry = Model_Article::find ('all', array ( 
   'where' => array ( 
      array ('name', 'Jon'), 
   ), 
   'order_by' => array ('id' => 'desc'), 
));

기본 데이터베이스 툴킷의 Query API를 고급 검색 옵션 모델과 함께 다음과 같이 사용할 수 있습니다.

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

최신 정보

모델을 업데이트하는 것은 새 모델을 생성하는 대신 find 메소드를 사용하여 업데이트 할 모델을 가져오고 속성을 업데이트 한 다음 다음과 같이 save 메소드를 호출한다는 점을 제외하면 생성과 동일합니다.

$entry = Model_Employee:find(4);
$entry->name = 'Peter'; 
$entry->save();

지우다

Orm은 모델을 삭제하는 삭제 방법을 제공합니다. 개체를 가져오고 delete 메서드를 호출하면됩니다.

$entry = Model_Employee:find(4); 
$entry->delete();

작업 예

모델과 데이터베이스를 이해하기 위해이 장에서 작동하는 예제를 만들어 보겠습니다.

데이터베이스 생성

다음 명령을 사용하여 MySQL 서버에 새 데이터베이스를 만듭니다.

create database tutorialspoint_fueldb

그런 다음 다음 명령을 사용하여 데이터베이스 내부에 테이블을 만듭니다.

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

데이터베이스 구성

데이터베이스 구성 파일 * fuel / app / config / db.php를 사용하여 데이터베이스를 구성하겠습니다. 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, 
      ), 
   );

ORM 패키지 포함

기본 구성 파일을 업데이트합니다. fuel/app/config/config.php 다음 구성을 추가하여 ORM 패키지를 포함합니다.

'always_load' => array ( 
   'packages' => array ( 
      'orm' 
   ), 
),

이제 애플리케이션에서 ORM이 활성화되었습니다.

직원 모델 생성

모델 폴더 아래에 새 모델 Employee를 만듭니다. “fuel/app/classes/model”. 다음과 같이 정의됩니다.

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

액션 만들기

새로운 액션 만들기, action_model 직원 컨트롤러에서 fuel/app/classes/controller/employee.php 다음과 같이.

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

보기 만들기

이제보기 파일을 만듭니다. model.php 에 위치한 “fuel/app/views/employee”. 파일에 다음 변경 사항을 추가하십시오.

<ul> 
   <?php 
      foreach($emps as $emp) {  
   ?> 
   <li><?php echo $emp['name']; ?></li> 
   
   <?php 
   } 
   ?> 
</ul>

이제 URL을 요청하고 http://localhost:8080/employee/model 다음 결과가 생성됩니다.

결과