cakephp – 如何设置数据库视图夹具?

是否可以在Cake PHP中设置一个可以创建数据库视图而不是数据库表的工具?在创建表的夹具中以及应该是数据库视图的另一个夹具中使用相同的数据似乎是低效的.

解决方法

我设法这样做,其中view_my_model.sql包含生成数据库视图的sql

class ViewMyModelFixture extends AppFixture {

    public function create($DboSource) {
        $path = APP . 'Config' . DS . 'sql' . DS . 'view_my_model.sql';
        $File = new File($path);
        if (!$File->exists()) {
            throw new CakeException($path . ' does not exist');
        }
        if (!$File->readable()) {
            throw new CakeException($path . ' is not readable');
        }
        $sql = $File->read();
        if (empty($sql)) {
            throw new CakeException($path . ' has no sql');
        }
        try {
            $DboSource->execute($sql);
            $this->created[] = $DboSource->configKeyName;
        } catch (Exception $exception) {
            $msg = __d('cake_dev','Fixture creation for "%s" Failed "%s"',$this->table,$exception->getMessage());
            CakeLog::error($msg);
            trigger_error($msg,E_USER_WARNING);
            return false;
        }
        return true;
    }

    public function drop($DboSource) {
        try {
            $sql = 'DROP VIEW ' . $DboSource->fullTableName($this->table) . ";";
            $DboSource->execute($sql);
            $this->created = array_diff($this->created,array($DboSource->configKeyName));
        } catch (Exception $exception) {
            return false;
        }
        return true;
    }

    public function truncate($DboSource) {
        return;
    }
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...