fuelphp 模型和數(shù)據(jù)庫
模型在 fuelphp web 框架中扮演著重要的角色。它代表應用程序的業(yè)務(wù)實體。它們要么由客戶提供,要么從后端數(shù)據(jù)庫獲取,根據(jù)業(yè)務(wù)規(guī)則進行操作并持久化回數(shù)據(jù)庫中。讓我們在本章中了解模型以及它們?nèi)绾闻c后端系統(tǒng)交互。
創(chuàng)建模型
在 fuelphp 中,模型只是簡單的 php 類擴展內(nèi)置模型類。默認情況下,模型可能以 model_ 為前綴,類似于控制器,應該放在 fuel/app/classes/model/ 文件夾中。讓我們創(chuàng)建一個基本的員工模型,并在繼續(xù)進行時對其進行擴展。
fuel/app/classes/model/employee.php
namespace model; class model_employee extends \model { public static function fetchall() { // code to fetch employee from database } }</pre--><h2>訪問模型</h2>
一旦定義了模型,就可以在任何控制器中自由使用它,只需將其包含在控制器中,如下所示。
use \model\employee; class controller_employee extends controller { public function action_index() { $employees = employee::fetchall(); } }<h2>數(shù)據(jù)庫概覽</h2>
fuelphp 提供了自己的數(shù)據(jù)庫抽象層來從數(shù)據(jù)庫中獲取數(shù)據(jù)。它提供了基本的和高級的基于 orm 的工具?;竟ぞ甙苫?db、dbutil 和 query_builer 的類組成。高級工具包是 orm。 orm 工具包派生自基礎(chǔ)工具包并捆綁為一個單獨的包。
<h2>數(shù)據(jù)庫配置</h2>
fuelphp 將數(shù)據(jù)庫設(shè)置與主配置文件分開,該文件是 <strong>fuel/app/config/db.php</strong>。它支持為每個環(huán)境單獨設(shè)置。目前,fuelphp 支持 mysql、mysqli 和 pdo 驅(qū)動程序。示例設(shè)置如下:
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, ), )<h2>基于數(shù)據(jù)庫的工具包</h2>
<strong>db 類</strong> 是從應用程序訪問數(shù)據(jù)庫的最簡單選項。它提供了構(gòu)建數(shù)據(jù)庫查詢、針對目標數(shù)據(jù)庫執(zhí)行并最終獲取結(jié)果的選項。 <em>db</em> 類與以下類交互并提供全面的數(shù)據(jù)庫 api。
<ul> <li><strong>database_connection</strong>-與數(shù)據(jù)庫交互的單例和主類</li> <li><strong>database_query</strong>-執(zhí)行 sql 查詢和獲取結(jié)果的基礎(chǔ)、具體類</li> <li><strong>database_query_builder</strong>-構(gòu)建 sql 查詢的基礎(chǔ)抽象類</li> <li><strong>database_query_builder_join</strong>-構(gòu)建 sql 連接的類</li> <li><strong>database_query_builder_where</strong>-構(gòu)建 sql 查詢條件的抽象類</li> <li><strong>database_query_builder_select</strong>-構(gòu)建 sql 選擇查詢的具體類</li> <li><strong>database_query_builder_insert</strong>-構(gòu)建 sql 插入查詢的抽象類</li> <li><strong>database_query_builder_update</strong>-構(gòu)建 sql 更新查詢的抽象類</li> <li><strong>database_query_builder_delete</strong>-構(gòu)建 sql 刪除查詢的抽象類</li> </ul>下圖描述了類和類提供的方法之間的關(guān)系。
<img src="/public/core/edit/php/../attached/20231217205439_65489.jpg" alt="" border="0" />
<h2>數(shù)據(jù)庫 api</h2>
讓我們在本節(jié)中學習 db 類中可用的最重要的方法。
<h3>實例</h3> <ul> <li><strong>目的</strong>-創(chuàng)建并返回新的 <em>database_connection</em> 實例。</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$db</strong>-配置文件中定義的數(shù)據(jù)庫連接名稱,可選。</li> <li><strong>返回</strong>-返回<em>database_connection</em> 對象</li> </ul>
例如
$db = db::instance(); $db = db::instance('test');<h3>查詢</h3> <ul> <li><strong>目的</strong>-準備提供的 sql 語句并返回 database_query 對象,該對象可用于插入、更新、刪除或從數(shù)據(jù)庫中獲取數(shù)據(jù)。</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$query</strong>-sql 語句,可能包含占位符;</li> <li><strong>$type</strong>-sql 類型,可選(db::select、db::insert、db::update 和 db::delete)</li> <li><strong>返回</strong>-返回<em>database_query</em> 對象</li> </ul>
例如
$query = db::query('select * from 'employees'');<h3>last_query</h3> <ul> <li><strong>目的</strong>-獲取最后執(zhí)行的查詢</li> <li><strong>參數(shù)</strong>-無</li> <li><strong>returns</strong>-返回最后執(zhí)行的查詢</li> </ul>
例如
$employees = db::select('select * from 'employee''); $sql = db::last_query();<h3>選擇</h3> <ul> <li><strong>目的</strong>-生成查詢的選擇部分</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$columns</strong>-數(shù)據(jù)庫列名列表</li> <li><strong>返回</strong>-返回 database_query_builder_select 對象</li> </ul>
例如
$query = db::select(); // select * $query = db::select('id', 'name'); // select id, name<h3>select_array (db)</h3>
它與 select 類似,只是我們可以將列作為數(shù)組發(fā)送。
$query = db::select_array(array('id', 'name')); // select id, name<h3>插入</h3> <ul> <li><strong>目的</strong>-生成查詢的插入部分</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$table_name</strong>-數(shù)據(jù)庫表的名稱;</li> <li><strong>$columns</strong>-表列數(shù)組</li> <li><strong>返回</strong>-返回 database_query_builder_insert 對象</li> </ul>
例如
$query = db::insert('employee'); // insert into employee $query = db::insert('employee', array('id', 'name')); // insert into employee (id, name)<h3>更新</h3> <ul> <li><strong>目的</strong>-生成查詢的更新部分</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$table_name</strong>-數(shù)據(jù)庫表名</li> <li><strong>返回</strong>-返回 database_query_builder_update 對象</li> </ul>
例如
$query = db::update('employee'); // update `employee`<h3>刪除</h3> <ul> <li><strong>目的</strong>-生成查詢的刪除部分</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$table_name</strong>-數(shù)據(jù)庫表名</li> <li><strong>返回</strong>-返回 database_query_builder_delete 對象</li> </ul>
例如
$query = db::delete('employee'); // delete from 'employee'<h2>查詢接口</h2>
<strong>database_query</strong> 提供了一個選項來設(shè)置數(shù)據(jù)庫連接、執(zhí)行查詢并將結(jié)果作為關(guān)聯(lián)數(shù)組或?qū)ο螳@取。讓我們看看 database_query 類提供的方法。
<h3>set_connection</h3> <ul> <li><strong>目的</strong>-設(shè)置對其執(zhí)行查詢的數(shù)據(jù)庫(數(shù)據(jù)庫連接詳細信息)</li> <li><strong>參數(shù)</strong>-$db-數(shù)據(jù)庫連接名稱</li> <li><strong>返回</strong>-返回<em>database_query</em> 對象</li> </ul>
例如
$query = db::query('delete * from employee', db::delete); $query->set_connection('2nd-db');<h3>參數(shù)</h3> <ul> <li><strong>目的</strong>-設(shè)置查詢對象中定義的參數(shù)值</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$param</strong>-參數(shù)名稱;</li> <li><strong>$value</strong>-參數(shù)的值</li> <li><strong>返回</strong>-返回<em>database_query</em> 對象</li> </ul>
例如
// 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);<h3>類似方法</h3>
<strong>parameters</strong> 是一個類似的對象,只是它提供了一次給出多個值的選項。
$query->parameters (array( 'tablename' => $table, 'id' => $id, 'name' => $name });<h3>綁定</h3> <ul> <li><strong>目的</strong>-將變量設(shè)置為查詢對象中定義的參數(shù)</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$param</strong>-參數(shù)名稱</li> <li><strong>$var</strong>-將參數(shù)綁定到的變量</li> <li><strong>返回</strong>-返回<em>database_query</em> 對象</li> </ul>
例如
// 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();<h3>編譯</h3> <ul> <li><strong>目的</strong>-將定義的查詢對象編譯為 sql 查詢</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$db</strong>-連接字符串,可選</li> <li><strong>退貨</strong>-</li> </ul>
例如
// 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();<h3>執(zhí)行</h3> <ul> <li><strong>目的</strong>-執(zhí)行查詢對象中定義的查詢并返回結(jié)果</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$db</strong>-數(shù)據(jù)庫連接名稱</li> <li><strong>返回</strong>-返回結(jié)果</li> </ul>
例如
// 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();<h3>as_assoc</h3> <ul> <li><strong>目的</strong>-將返回類型設(shè)置為關(guān)聯(lián)數(shù)組而不是對象</li> <li><strong>參數(shù)</strong>-無</li> <li><strong>返回</strong>-返回當前對象</li> </ul>
例如
$query = db::query('select * from employee', db::select); $result = $query->as_assoc()->execute(); foreach ($result as $row) { echo $row['id']; }<h3>as_object</h3> <ul> <li><strong>目的</strong>-將返回類型設(shè)置為對象而不是關(guān)聯(lián)數(shù)組</li> <li><strong>參數(shù)</strong>-無</li> <li><strong>返回</strong>-返回當前對象</li> </ul>
例如
$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();<h2>查詢生成器 api</h2>
查詢構(gòu)建器 <em>(query_builder)</em> 基于類提供動態(tài)構(gòu)建 sql 查詢的選項。它有四個類,每個類選擇 <em>(query_builder_select)</em>、插入 <em>(query_builder_insert)</em>、更新 <em>(query_builder_update)</em>和刪除 <em>(query_builder_delete )</em> 查詢。這些類派生自 <em>query_builder_where</em> 類(生成條件的選項),該類本身派生自所有類的基礎(chǔ) <em>query_builder</em>。
讓我們看看 query_builder 類提供的方法。
<h3>select</h3> <ul> <li><strong>目的</strong>-生成選擇查詢的列。</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$columns</strong>-列列表,可選</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
例如
$query = db::select('name') // select `name` $query = db::select(array('first_name', 'name')) // select `first_name` as `name`<h3>from</h3> <ul> <li><strong>目的</strong>-生成選擇查詢的表詳細信息</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$tables</strong>-表格列表</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
例如
$query = db::select('name')->from('employee') // select `name` from `employee`<h3>where</h3> <ul> <li><strong>目的</strong>-生成選擇、插入和更新查詢的條件</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$column</strong>-列名或數(shù)組 ($column, $alias);</li> <li><strong>$op</strong>-邏輯運算符,=、!=、in、between 和 like,可選;</li> <li><strong>$value</strong>-列值</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
例如
$query = db::select('name')->from('employee') $query = $query->where('name', '=', 'jon'); // select `name` from `employee` where `name` = `jon`;<h3>類似方法</h3>
類似的方法有 where_open(), and_where_open(), or_where_open(), where_close(), and_where_close(), or_where_close()。它們類似于 where() 方法,只是它們在條件周圍添加了額外的關(guān)鍵字和括號。以下是示例代碼。
$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")<h3>join</h3> <ul> <li><strong>目的</strong>-生成選擇查詢的表連接</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$table</strong>-表名或數(shù)組($table, $alias);</li> <li><strong>$type</strong>-連接類型(left、right、inner 等)</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
<strong>示例:</strong>
$query = db::select('name')->from('employee')->join('employee_salary') // select `name` from `employee` join `employee_salary`<h3>on</h3> <ul> <li><strong>目的</strong>-在選擇查詢中生成連接條件</li> <li><strong>參數(shù)</strong>-</li> <li><strong>$c1</strong>-表名或在數(shù)組中有別名的表名;</li> <li><strong>$op</strong>-邏輯運算符;</li> <li><strong>$c2</strong>-表名或在數(shù)組中有別名的表名</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
例如
$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`<h3>類似方法</h3>
相關(guān)方法有and_on()和or_on()。它們與 on() 類似,只是它們在連接周圍添加了額外的關(guān)鍵字和括號。
<h3>group_by</h3> <ul> <li><strong>目的</strong>-按查詢生成分組</li> <li><strong>參數(shù)</strong>-<strong>$columns</strong>-用于對結(jié)果進行分組的列名</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
例如
$query = db::select('name')->from('employee') $query = $query->group_by('name'); // select `name` from `employee` group by `name`<h3>having</h3> <ul> <li><strong>目的</strong>-根據(jù) sql 查詢條件生成分組</li> <li><strong>參數(shù)</strong>-<strong>$column</strong>-列名或數(shù)組( $column, $alias ); <strong>$op</strong>-邏輯運算符,=、!=、in、between 和 like,可選; <strong>$value</strong>-列值</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
<strong>示例:</strong>
$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`<h3>類似方法</h3>
類似的方法有having_open()、and_sharing_open()、or_sharing_open()、has_have_close()、and_sharing_close()、or_sharing_close()。除了它們在條件周圍添加額外的關(guān)鍵字和括號之外,它們與 have() 方法類似。
<h3>reset</h3> <ul> <li><strong>目的</strong>-重置查詢</li> <li><strong>參數(shù)</strong>-無</li> <li><strong>返回</strong>-返回當前實例</li> </ul>
例如
$query = db::select('name')->from('employee') $query->reset() $query = db::select('name')->from('employee_salary') // select `name` from `employee_salary`<h3>dbutil 類</h3>
dbutil 類提供管理和執(zhí)行日常數(shù)據(jù)庫操作的選項。一些重要的方法如下:
<ul> <li>set_connection-設(shè)置默認連接</li> </ul>dbutil::set_connection('new_database');<ul> <li>create_database-創(chuàng)建數(shù)據(jù)庫。</li> </ul>dbutil::create_database('my_database');<ul> <li>drop_database-刪除數(shù)據(jù)庫。</li> </ul>dbutil::drop_database('my_database');<ul> <li>table_exists-檢查給定的表是否存在。</li> </ul>if(dbutil::table_exists('my_table')) { // table exists } else { // table does not exist, create it! }<ul> <li>drop_table-刪除一個表。</li> </ul>dbutil::drop_table('my_table');<ul> <li>create_table-創(chuàng)建一個表。</li> </ul>\dbutil::create_table ( 'users', array ( 'id' => array('type' => 'int', 'auto_increment' => true), 'name' => array('type' => 'text'), ), );<h2>orm 工具包</h2>
fuelphp 使用基于流行的 <strong>活動記錄模式</strong>的 orm 概念提供高級數(shù)據(jù)庫層。該工具包包含在應用程序中,但默認情況下未配置。它被捆綁成一個包,包名是orm。我們可以在主配置文件 <strong>fuel/app/config/config.php</strong>中添加如下配置來加載orm工具包。
'always_load' => array ( 'packages' => array ( 'orm', ), ),<h3>創(chuàng)建模型</h3>
orm 提供基礎(chǔ)模型類 orm\model。我們需要使用 orm 模型擴展我們的模型以使用 orm 功能。以下是示例代碼。
class model_employee extends orm\model {}<h3>configuration</h3>
orm 提供了一組設(shè)置來配置模型以使用 orm 功能。它們?nèi)缦拢?/p>
<strong>connection</strong>-在模型中設(shè)置靜態(tài) <em>_connection</em> 屬性以指定連接名稱。
class model_employee extends orm\model { protected static $_connection = "production"; }<strong>表名</strong>-在模型中設(shè)置靜態(tài) <em>_table_name</em> 屬性以指定后端表的表名。
class model_employee extends orm\model { protected static $_table_name = 'employee'; }<strong>primary key</strong>-在模型中設(shè)置靜態(tài) <em>_primary_key</em> 屬性以指定后端表的主鍵。
class model_employee extends orm\model { protected static $_primary_key = array('id'); }<strong>columns</strong>-在模型中設(shè)置靜態(tài) _properties 屬性以指定后端表的列。支持數(shù)據(jù)類型、標簽、驗證、表單元素等
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' ), ), ); }<strong>條件</strong>-設(shè)置靜態(tài) <em>_conditions</em> 屬性以設(shè)置條件和按選項排序。
class model_employee extends orm\model { protected static $_conditions = array ( 'order_by' => array('id' => 'desc'), 'where' => array ( array('is_active', > true), ), ); }<strong>observers</strong>- <em>orm</em> 提供基于觀察者的事件系統(tǒng)來為特定事件添加行為。要添加行為,首先在模型中設(shè)置 <em>_observers</em> 屬性。然后,將行為定義為一個類并將其與事件一起設(shè)置在 <em>_observers</em> 屬性中。如果未指定事件,則將為所有事件調(diào)用該行為。我們也可以指定多種行為。
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 ) ); }<h3>create</h3>
一旦我們配置了模型,我們就可以立即開始使用這些方法。 <em>orm</em> 提供了一個 <em>save</em> 方法來將對象保存到數(shù)據(jù)庫中。我們可以使用配置的屬性設(shè)置數(shù)據(jù)如下:
// 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();<h3>read</h3>
orm 提供了一個方法,find 從數(shù)據(jù)庫中獲取數(shù)據(jù)并綁定到對象中。 find 方法的工作取決于輸入?yún)?shù)。讓我們看看不同的選項:
<strong>by primary key</strong>-指定主鍵通過匹配配置表的主鍵返回記錄。
$employee = model_employee::find(1);<strong>first/last record</strong>-指定"first"或"last"將分別獲取第一條記錄或最后一條記錄。我們也可以通過選項傳遞訂單。
$entry = model_employee::find('first'); $entry = model_article::find('last', array('order_by' => 'id'));<strong>all</strong>-指定"all"將從配置的表中獲取所有記錄。我們可以按選項和條件指定順序。
$entry = model_employee::find('all'); $entry = model_article::find ('all', array ( 'where' => array ( array ('name', 'jon'), ), 'order_by' => array ('id' => 'desc'), ));我們可以使用基本數(shù)據(jù)庫工具包的查詢 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();<h3>更新</h3>
更新模型與創(chuàng)建模型相同,只是不是創(chuàng)建新模型,而是使用 find 方法獲取要更新的模型,更新屬性,然后調(diào)用 save 方法,如下所示。
$entry = model_employee:find(4); $entry->name = 'peter'; $entry->save();<h3>刪除</h3>
orm 提供了刪除模型的刪除方法。只需獲取對象并調(diào)用刪除方法即可。
$entry = model_employee:find(4); $entry->delete();<h2>工作示例</h2>
讓我們在本章中創(chuàng)建一個工作示例來了解模型和數(shù)據(jù)庫。
<h3>創(chuàng)建數(shù)據(jù)庫</h3>
使用以下命令在 mysql 服務(wù)器中創(chuàng)建一個新數(shù)據(jù)庫。
create database tutorialspoint_fueldb然后,使用以下命令在數(shù)據(jù)庫中創(chuàng)建一個表。
create table employee(id int primary key, name varchar(20), age int not null);<h3>配置數(shù)據(jù)庫</h3>
讓我們使用數(shù)據(jù)庫配置文件 *fuel/app/config/db.php 來配置數(shù)據(jù)庫。添加以下更改以連接 mysql 服務(wù)器。
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, ), );<h3>包含 orm 包</h3>
更新主配置文件 <strong>fuel/app/config/config.php</strong> 通過添加以下配置來包含 orm 包。
'always_load' => array ( 'packages' => array ( 'orm' ), ),現(xiàn)在,您的應用程序中啟用了 orm
<h3>創(chuàng)建員工模型</h3>
在模型文件夾 <strong>"fuel/app/classes/model"</strong>下新建一個模型employee,定義如下。
<strong>employee.php</strong>
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' ), ), ); }<h3>create action</h3>
在位于 <strong>fuel/app/classes/controller/employee.php</strong> 的 employee 控制器中創(chuàng)建新動作, <strong>action_model</strong>,如下所示。
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)); } }<h3>創(chuàng)建視圖</h3>
現(xiàn)在,創(chuàng)建一個位于 <strong>"fuel/app/views/employee"</strong> 的視圖文件 <strong>model.php</strong>。在文件中添加以下更改。
<ul> foreach($emps as $emp) { <li> echo $emp['name']; </li> } </ul>現(xiàn)在,請求 url, <strong>http://localhost:8080/employee/model</strong>,它將產(chǎn)生以下結(jié)果。
<h3>結(jié)果</h3>
<img src="/public/core/edit/php/../attached/20231217205331_95671.jpg" alt="" border="0" />
<h3><a href="/s7900103/fuelphp 表單編程.html">下一節(jié):fuelphp 表單編程</a></h3> <a class="bottom-summary-prompt" href="/php/php_sz/153.html"><h3>fuelphp 教程</h3> </a>
- CodeIgniter 安裝
- CodeIgniter 發(fā)送電子郵件
- CodeIgniter 表單驗證
- CodeIgniter Cookie管理
- CodeIgniter 常用函數(shù)
- CodeIgniter 基準測試
- CodeIgniter 添加JS和CSS
- CodeIgniter 國際化
- CakePHP 控制器
- CakePHP 查看元素
- CakePHP 刪除記錄
- CakePHP 服務(wù)
- CakePHP 安全
- CakePHP 驗證
- CakePHP 文件上傳
- FuelPHP 演示者
- FuelPHP HMVC 請求
- FuelPHP 分析器
- Laravel Cookie
- Laravel 錯誤處理