一、安装配置

Yaf里是没有数据库操作类的,要么自己写,要么使用第三方

Laravel 提供的Eloquent ORM足够强大,所以我们这里还是使用他

composer 搭建MVC框架那节,我们已经使用过了Eloquent ORM

安装
composer require illuminate/database
composer require illuminate/events
注意:在Yaf使用模型前,确保php.ini开启命名空间
yaf.use_namespace=1;开启命名空间
yaf.use_spl_autoload=1 ;开启自动加载

注意:一定要开启命名空间和自动加载,否则yaf会到你设置的library目录查找类
配置php.ini文件记得重启

根据composer安装完成后,在入口文件引入自动加载文件
require APPLICATION_PATH.'/vendor/autoload.php';
配置数据库信息

application.ini

[database]
database.driver     = mysql
database.host       = 127.0.0.1
database.database   = test
database.username   = root
database.password   = 123456
database.port       = 3306
database.charset    = utf8
database.collation  = utf8_unicode_ci
database.prefix     = ""
引导程序初始化

添加_initDefaultDbAdapter方法,初始化模型
Bootstrap.php

<?php
use Illuminate\Events\Dispatcher as LDispatcher;
use Illuminate\Container\Container as LContainer;
use Illuminate\Database\Capsule\Manager as Capsule;

class Bootstrap extends Yaf\Bootstrap_Abstract {

    protected $config;
    public function _initConfig() {
        //把配置保存起来
        $this->config = Yaf\Application::app()->getConfig();
        Yaf\Registry::set('config', $this->config);
    }

    public function _initDefaultDbAdapter(Yaf\Dispatcher $dispatcher){
        $capsule = new Capsule();
        $capsule->addConnection($this->config->database->toArray());
        $capsule->setEventDispatcher(new LDispatcher(new LContainer));
        $capsule->setAsGlobal();
        $capsule->bootEloquent();
    }
}

二、使用

注意:Yaf模型命名的规则,所以模型名称,都有Model后缀

正常我们会建个基类,其它模型都继承它
Base.php

<?php
use Illuminate\Database\Eloquent\Model;

class BaseModel extends Model
{

}

Post模型,注意模型名称PostModel
Post.php

class PostModel extends BaseModel
{
    public $table = 'posts';
}

在控制器中调用
Index.php

public function modelAction()
{
    $post = PostModel::find(100);
    print_r($post->toArray());
    return false;
}

是的,可以看到像Laravel一样使用Eloquent Model了