当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

模型 - 一般

优质
小牛编辑
133浏览
2023-12-01

模型是什幺?

每当需要取回、操纵或删除资料时,应始终藉由模型来完成。模型是一些类型资料与变更它们的方法的代表。 例如:你不会把 SQL 查询放在一个控制器,这些查询被放在模型里,且控制器会在呼叫模型后执行它们。 如此一来,如果你的资料库改变,你将只要变更后面作用的模型,而不需要变更你所有的控制器。

模型如何使用?

在 Fuel 里,模型就像任何其他的 类别 一样。它们做的也不比函式库多, 但模组前缀帮助它与其他类别做区别。要用模型做一些有用的事情,你将需要使用其他类别。

建立模型


namespace Model;

class Welcome extends \Model {

    public static function get_results()
    {
        // 资料库互动
    }

}

在命名空间外,记得前缀一个反斜线到你正在使用的来自全域的类别。 如果你不明白为什幺,在 PHP.net 阅读关于命名空间。

存取模型

PHP 有 use 关键字用来导入类别到目前命名空间, 这能让你在一个指定类别的档案内:把 Model 的名称从 Model\Welcome 缩短到只有 Welcome


use \Model\Welcome;

class Controller_Welcome extends Controller
{
    public function action_index()
    {
        $results = Welcome::get_results();
    }
}   

撰写你自己的模型

虽然模型可被用于任何类型的资料储存,我们将着重于与 SQL 的使用,因为那是最常见的用法。 几乎你的模型都至少会有所有的 CRUD 方法:建立、读取、更新、删除(或这些的变化)。在 Fuel 里你的模型预设不需要扩充任何东西, 当然你可以建立你自己的基础模型或使用 Fuel 的 Orm 套件

撰写 SQL 查询

你可以使用 DB 类别建立像这样的原生 SQL:

DB::query('SELECT * FROM users WHERE id = 5');

使用查询建立器

当谈到转义资料,与在阵列中的资料协作或使应用程序移植到多个资料库引擎, 你会发现原生 SQL 相当麻烦。使用 DB 类别中的 Query Builder 方法,你可以抽象撰写原生 SQL:

DB::select('title','content')->from('articles')->execute()->get('title');

DB 类别 文件了解更多关于原生 SQL 查询和使用 Query Builder。

使用 Model_Crud 建立模型

一个建立模型可能的方式是藉由使用 Model_Crud,添加一个常用功能到你的模型来与资料库表互动。下面有一个使用的範例。

// 寻找所有文章
$entry = Model_Article::find_all();

// 从种类 1 以日期降序排列寻找所有文章
$entry = Model_Article::find(array(
    'where' => array('category_id', 1),
    'order_by' => array('date' => 'desc')
));

使用 Orm 建立模型

对于具有更多功能的模型,像支援关联,你可以使用 Orm 套件,其中增加了很多开箱即用的功能到你的模型。下面有一个使用的範例。

// 寻找所有文章
$entry = Model_Article::find('all');

// 从种类 1 以日期降序排列寻找所有文章
$entry = Model_Article::find('all', array(
    'where' => array('category_id', 1),
    'order_by' => array('date', 'desc')
));

Model_Crud 和 ORM 套件使用类似的语法,一旦你需要比 Model_Crud 可提供更多的功能时,这使它能简单的迁移。