解决方法
我设法这样做,其中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; } }