FuelPHP - Modelos y base de datos

El modelo juega un papel importante en el marco web FuelPHP. Representa a las entidades comerciales de la aplicación. Los proporcionan los clientes o se obtienen de la base de datos de backend, se manipulan de acuerdo con las reglas comerciales y se conservan en la base de datos. Aprendamos sobre los modelos y cómo interactúan con el sistema de back-end en este capítulo.

Creando un modelo

En FuelPHP, el modelo es simplemente una clase PHP simple que extiende la clase Model incorporada. Por defecto, los modelos pueden tener el prefijo Model_ similar a los controladores y deben colocarse enfuel/app/classes/model/carpeta. Creemos un modelo de empleado básico y ampliémoslo a medida que avanzamos.

fuel / app / classes / model / employee.php

<?php 
   namespace Model; 

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

Acceder a un modelo

Una vez que se define un modelo, se puede usar libremente en cualquier controlador con solo incluirlo en el controlador de la siguiente manera.

use \Model\Employee; 

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

Descripción general de la base de datos

FuelPHP proporciona su propia capa de abstracción de la base de datos para obtener datos de la base de datos. Proporciona una herramienta basada en ORM tanto básica como avanzada. El kit de herramientas básico consta de clases basadas en DB, DBUtil y Query_Builer. El conjunto de herramientas avanzado es Orm. El kit de herramientas de Orm se deriva del kit de herramientas básico y se incluye como un paquete separado.

Configuración de la base de datos

FuelPHP separa la configuración de la base de datos del archivo de configuración principal y el archivo es fuel/app/config/db.php. Admite una configuración separada para cada entorno. Actualmente, FuelPHP admite controladores MySQL, MySQLi y PDO. La configuración de muestra es la siguiente:

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

Kit de herramientas basado en DB

los DB classes la opción más sencilla para acceder a la base de datos desde la aplicación. Proporciona opciones para crear la consulta de la base de datos, ejecutarla en la base de datos de destino y, finalmente, recuperar el resultado. La clase DB interactúa con las siguientes clases y proporciona una API de base de datos completa.

  • Database_Connection - Singleton y clase principal para interactuar con la base de datos

  • Database_Query - Clase base, concreta para ejecutar la consulta SQL y obtener el resultado

  • Database_Query_Builder - Clase base, abstracta para construir consultas SQL

  • Database_Query_Builder_Join - Clase para construir uniones SQL

  • Database_Query_Builder_Where - Clase abstracta para construir condiciones de consulta SQL

  • Database_Query_Builder_Select - Clase concreta para construir una consulta de selección SQL

  • Database_Query_Builder_Insert - Clase abstracta para construir una consulta de inserción SQL

  • Database_Query_Builder_Update - Clase abstracta para construir consultas de actualización SQL

  • Database_Query_Builder_Delete - Clase abstracta para construir consultas de eliminación SQL

El siguiente diagrama muestra la relación entre las clases y los métodos proporcionados por las clases.

API de base de datos

Aprendamos los métodos más importantes disponibles en la clase DB en esta sección.

ejemplo

  • Purpose- Crea y devuelve la nueva instancia de Database_Connection .

  • Parameter -

    • $db - Nombre de la conexión a la base de datos definido en el archivo de configuración, opcional.

  • Returns- Devuelve el objeto Database_Connection

Por ejemplo,

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

consulta

  • Purpose - Prepara la declaración SQL proporcionada y devuelve el objeto Database_Query, que se puede usar para insertar, actualizar, eliminar o recuperar los datos de la base de datos.

  • Parameter -

    • $query - instrucción SQL, puede contener marcadores de posición;

    • $type - Tipo SQL, opcional (DB :: SELECT, DB :: INSERT, DB :: UPDATE y DB :: DELETE)

  • Returns- Devuelve el objeto Database_Query

Por ejemplo,

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

last_query

  • Purpose - Para obtener la última consulta ejecutada

  • Parameter - Ninguno

  • Returns - Devuelve la última consulta ejecutada

Por ejemplo,

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

Seleccione

  • Purpose - Generar la parte seleccionada de la consulta

  • Parameter -

    • $columns - Lista de los nombres de las columnas de la base de datos

  • Returns - Devuelve el objeto Database_Query_Builder_Select

Por ejemplo,

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

select_array (DB)

Es similar a seleccionar excepto que podemos enviar columnas como matriz.

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

insertar

  • Purpose - Generar la parte de inserción de la consulta

  • Parameter -

    • $table_name - nombre de la tabla de la base de datos;

    • $columns - matriz de columnas de la tabla

  • Returns - Devuelve el objeto Database_Query_Builder_Insert

Por ejemplo,

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

actualizar

  • Purpose - Generar la parte de actualización de la consulta.

  • Parameter -

    • $table_name - nombre de la tabla de la base de datos

  • Returns - Devuelve el objeto Database_Query_Builder_Update

Por ejemplo,

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

Eliminar

  • Purpose - Generar la parte de borrar de la consulta

  • Parameter -

    • $table_name - nombre de la tabla de la base de datos

  • Returns - Devuelve el objeto Database_Query_Builder_Delete

Por ejemplo

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

API de consulta

Database_Queryproporciona una opción para establecer la conexión a la base de datos, ejecutar la consulta y obtener el resultado como una matriz u objeto asociativo. Veamos los métodos proporcionados por la clase Database_Query.

set_connection

  • Purpose - Para configurar la base de datos (detalles de conexión de la base de datos) contra la cual ejecutar la consulta

  • Parameter - $ db - nombre de conexión a la base de datos

  • Returns- Devuelve el objeto Database_Query

Por ejemplo,

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

param

  • Purpose - Para establecer el valor del parámetro definido en el objeto Consulta

  • Parameter -

    • $param - nombre del parámetro;

    • $value - valor del parámetro

  • Returns- Devuelve el objeto Database_Query

Por ejemplo,

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

Métodos similares

parameters es un objeto similar excepto que ofrece la opción de dar varios valores a la vez.

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

enlazar

  • Purpose - Para establecer una variable en el parámetro definido en el objeto Consulta

  • Parameter -

    • $param - nombre del parámetro

    • $var - la variable a la que enlazar el parámetro

  • Returns- Devuelve el objeto Database_Query

Por ejemplo,

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

compilar

  • Purpose - Para compilar el objeto de consulta definido en una consulta SQL

  • Parameter -

    • $db - cadena de conexión, opcional

  • Returns -

Por ejemplo,

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

ejecutar

  • Purpose - Ejecutar la consulta definida en el objeto Consulta y devolver el resultado

  • Parameter -

    • $db - nombre de conexión a la base de datos

  • Returns - Devuelve el resultado

Por ejemplo,

// 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 - Para establecer el tipo de retorno como matriz asociativa en lugar de objetos

  • Parameter - Ninguno

  • Returns - Devuelve el objeto actual

Por ejemplo,

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

as_object

  • Purpose - Para establecer el tipo de retorno como objeto en lugar de matriz asociativa

  • Parameter - Ninguno

  • Returns - Devuelve el objeto actual

Por ejemplo,

$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 del generador de consultas

Las clases basadas en el generador de consultas (Query_Builder) proporcionan opciones para generar consultas SQL de forma dinámica. Tiene cuatro clases, cada una para seleccionar (Query_Builder_Select) , insertar (Query_Builder_Insert) , actualizar (Query_Builder_Update) y eliminar (Query_Builder_Delete) consultas. Estas clases se derivan de la clase Query_Builder_Where (opción para generar condiciones), que a su vez se deriva de Query_Builder , base de todas las clases.

Veamos los métodos proporcionados por la clase Query_Builder.

Seleccione

  • Purpose - Generar las columnas de consultas seleccionadas.

  • Parameter -

    • $columns - lista de columnas, opcional

  • Returns - Devuelve la instancia actual

Por ejemplo,

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

desde

  • Purpose - Para generar los detalles de la tabla de consultas seleccionadas

  • Parameter -

    • $tables - lista de tablas

  • Returns - Devuelve la instancia actual

Por ejemplo,

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

dónde

  • Purpose - Generar las condiciones de seleccionar, insertar y actualizar consultas

  • Parameters -

    • $column - nombre de columna o matriz ($ columna, $ alias);

    • $op - operadores lógicos, =,! =, IN, BETWEEN y LIKE, opcional;

    • $value - valor de columna

  • Returns - Devuelve la instancia actual

Por ejemplo,

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

Métodos similares

Los métodos similares son where_open (), and_where_open (), or_where_open (), where_close (), and_where_close (), or_where_close (). Son similares a los métodos where () excepto que añaden palabras clave adicionales y corchetes alrededor de las condiciones. A continuación se muestra un código de muestra.

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

unirse

  • Purpose - Para generar las combinaciones de tablas de consultas seleccionadas

  • Parameters -

    • $table - nombre de la tabla o matriz ($ tabla, $ alias);

    • $type - tipo de unión (IZQUIERDA, DERECHA, INTERIOR, etc.,)

  • Returns - Devuelve la instancia actual

Ejemplo

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

en

  • Purpose - Generar la condición de uniones en consultas seleccionadas

  • Parameters -

    • $c1 - nombre de tabla o nombre de tabla con alias en matriz;

    • $op - operador lógico;

    • $c2 - nombre de tabla o nombre de tabla con alias en matriz

  • Returns - Devuelve la instancia actual

Por ejemplo,

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

Métodos similares

Los métodos relacionados son and_on () y or_on (). Son similares a on () excepto que agregan palabras clave adicionales y corchetes alrededor de las combinaciones.

agrupar por

  • Purpose - Generar grupo por consultas

  • Parameter - $columns - Nombre de la columna por la que agrupar el resultado

  • Returns - Devuelve la instancia actual

Por ejemplo,

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

teniendo

  • Purpose - Generar el grupo por condiciones de consultas SQL

  • Parameter - $column - nombre de columna o matriz ($ columna, $ alias); $op - operadores lógicos, =,! =, IN, BETWEEN y LIKE, opcional; $value - valor de columna

  • Returns - Devuelve la instancia actual

Ejemplo

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

Métodos similares

Los métodos similares son have_open (), and_having_open (), or_having_open (), having_close (), and_having_close () o_having_close (). Son similares a los métodos have () excepto que agregan palabras clave adicionales y corchetes alrededor de las condiciones.

Reiniciar

  • Purpose - Para resetear la consulta

  • Parameter - Ninguno

  • Returns - Devuelve la instancia actual

Por ejemplo,

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

Clase DBUtil

La clase DBUtil proporciona una opción para administrar y realizar operaciones de base de datos de rutina. Algunos de los métodos importantes son los siguientes:

  • set_connection: establece la conexión predeterminada
DBUtil::set_connection('new_database');
  • create_database: crea una base de datos.
DBUtil::create_database('my_database');
  • drop_database: elimina una base de datos.
DBUtil::drop_database('my_database');
  • table_exists: comprueba si existe una tabla determinada.
if(DBUtil::table_exists('my_table')) { 
   // Table exists 
} else { 
   // Table does NOT exist, create it! 
}
  • drop_table: suelta una tabla.
DBUtil::drop_table('my_table');
  • create_table: crea una tabla.
\DBUtil::create_table ( 
   'users', 
   array ( 
      'id' => array('type' => 'int', 'auto_increment' => true), 
      'name' => array('type' => 'text'), 
   ), 
);

Kit de herramientas de Orm

FuelPHP proporciona una capa de base de datos avanzada usando el concepto ORM basado en el popular Active record pattern. El kit de herramientas está incluido en la aplicación pero no está configurado de forma predeterminada. Se incluye como un paquete y el nombre del paquete es orm. Podemos agregar la siguiente configuración en el archivo de configuración principal,fuel/app/config/config.php para cargar el kit de herramientas de orm.

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

Creando modelos

Orm proporciona la clase de modelo base Orm \ Model. Necesitamos ampliar nuestros modelos con el modelo orm para usar las funciones ORM. A continuación se muestra un código de muestra.

class Model_Employee extends Orm\Model {}

Configuración

Orm proporciona un conjunto de opciones para configurar el modelo para utilizar las funciones de ORM. Son los siguientes:

connection- Establezca una propiedad _connection estática en el modelo para especificar el nombre de la conexión.

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

table name- Establezca una propiedad _table_name estática en el modelo para especificar el nombre de la tabla de backend.

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

primary key- Establezca una propiedad _primary_key estática en el modelo para especificar la clave principal de la tabla de backend.

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

Columns- Establezca una propiedad _properties estática en el modelo para especificar las columnas de la tabla de back-end. Admite tipo de datos, etiqueta, validación, elementos de formulario, etc.

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- Establecer una propiedad _conditions estática para establecer las condiciones y ordenar por opciones.

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

Observers- Orm proporciona un sistema de eventos basado en observadores para agregar comportamiento a eventos específicos. Para agregar un comportamiento, primero establezca una propiedad _observers en el modelo. Luego, defina el comportamiento como una clase y configúrelo en la propiedad _observers junto con los eventos. Si no se especifica ningún evento, el comportamiento se invocará para todos los eventos. También podemos especificar comportamientos múltiples.

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

Crear

Una vez que configuramos el modelo, podemos empezar a utilizar los métodos de inmediato. Orm proporciona una parada método para guardar el objeto en la base de datos. Podemos configurar los datos usando propiedades configuradas de la siguiente manera:

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

Leer

Orm proporciona un método, buscar para obtener los datos de la base de datos y vincularlos al objeto. El método de búsqueda funciona según el parámetro de entrada. Veamos las diferentes opciones:

by primary key - Especificar la clave principal devuelve el registro haciendo coincidir la clave principal de la tabla configurada.

$employee = Model_Employee::find(1);

first / last record- Especificar 'primero' o 'último' buscará el primer registro o el último registro respectivamente. También podemos pasar el pedido por opción.

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

All- Especificar 'todos' buscará todos los registros de la tabla configurada. Podemos especificar orden por opción así como condiciones.

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

Podemos usar la API de consulta del kit de herramientas de base de datos básica junto con el modelo para la opción de búsqueda avanzada de la siguiente manera.

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

Actualizar

Actualizar el modelo es lo mismo que crear, excepto que en lugar de crear un nuevo modelo, simplemente busque el modelo que se actualizará usando el método de búsqueda, actualice la propiedad y luego llame al método de guardar de la siguiente manera.

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

Eliminar

Orm proporciona un método de eliminación para eliminar el modelo. Simplemente busque el objeto y llame al método de eliminación.

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

Ejemplo de trabajo

Creemos un ejemplo funcional en este capítulo para comprender el modelo y la base de datos.

Crear una base de datos

Cree una nueva base de datos en el servidor MySQL, usando el siguiente comando.

create database tutorialspoint_fueldb

Luego, cree una tabla dentro de la base de datos usando el siguiente comando.

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

Configurar la base de datos

Configuremos la base de datos usando el archivo de configuración de la base de datos, * fuel / app / config / db.php. Agregue los siguientes cambios para conectar el servidor 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, 
      ), 
   );

Incluir paquete ORM

Actualice el archivo de configuración principal, fuel/app/config/config.php para incluir el paquete ORM agregando la siguiente configuración.

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

Ahora, ORM está habilitado en su aplicación

Crear modelo de empleado

Cree un nuevo modelo, Empleado en la carpeta del modelo “fuel/app/classes/model”. Se define como sigue.

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

Crear acción

Crear nueva acción action_model en Controlador de empleados ubicado en fuel/app/classes/controller/employee.php como sigue.

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

Crear vista

Ahora, cree un archivo de vista model.php situado en “fuel/app/views/employee”. Agregue los siguientes cambios en el archivo.

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

Ahora, solicite la URL, http://localhost:8080/employee/model y producirá el siguiente resultado.

Resultado