本文整理汇总了PHP中CakeSchema::write方法的典型用法代码示例。如果您正苦于以下问题:PHP CakeSchema::write方法的具体用法?PHP CakeSchema::write怎么用?PHP CakeSchema::write使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CakeSchema
的用法示例。
在下文中一共展示了CakeSchema::write方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: generate
/**
* Read database and Write schema object
* accepts a connection as first arg or path to save as second arg
*
* @return void
*/
public function generate()
{
$this->out(__d('cake_console', 'Generating Schema...'));
$options = array();
if ($this->params['force']) {
$options['models'] = false;
} elseif (!empty($this->params['models'])) {
$options['models'] = String::tokenize($this->params['models']);
}
$snapshot = false;
if (isset($this->args[0]) && $this->args[0] === 'snapshot') {
$snapshot = true;
}
if (!$snapshot && file_exists($this->Schema->path . DS . $this->params['file'])) {
$snapshot = true;
$prompt = __d('cake_console', "Schema file exists.\n [O]verwrite\n [S]napshot\n [Q]uit\nWould you like to do?");
$result = strtolower($this->in($prompt, array('o', 's', 'q'), 's'));
if ($result === 'q') {
return $this->_stop();
}
if ($result === 'o') {
$snapshot = false;
}
}
$cacheDisable = Configure::read('Cache.disable');
Configure::write('Cache.disable', true);
$content = $this->Schema->read($options);
$content['file'] = $this->params['file'];
Configure::write('Cache.disable', $cacheDisable);
if ($snapshot === true) {
$fileName = rtrim($this->params['file'], '.php');
$Folder = new Folder($this->Schema->path);
$result = $Folder->read();
$numToUse = false;
if (isset($this->params['snapshot'])) {
$numToUse = $this->params['snapshot'];
}
$count = 0;
if (!empty($result[1])) {
foreach ($result[1] as $file) {
if (preg_match('/' . preg_quote($fileName) . '(?:[_\\d]*)?\\.php$/', $file)) {
$count++;
}
}
}
if ($numToUse !== false) {
if ($numToUse > $count) {
$count = $numToUse;
}
}
$content['file'] = $fileName . '_' . $count . '.php';
}
if ($this->Schema->write($content)) {
$this->out(__d('cake_console', 'Schema file: %s generated', $content['file']));
$this->_stop();
} else {
$this->err(__d('cake_console', 'Schema file: %s generated'));
$this->_stop();
}
}
示例2: generate
/**
* Read database and Write schema object
* accepts a connection as first arg or path to save as second arg
*
*/
public function generate()
{
$this->out(__('Generating Schema...'));
$options = array();
if (isset($this->params['force'])) {
$options = array('models' => false);
}
$snapshot = false;
if (isset($this->args[0]) && $this->args[0] === 'snapshot') {
$snapshot = true;
}
if (!$snapshot && file_exists($this->Schema->path . DS . $this->params['file'])) {
$snapshot = true;
$result = strtolower($this->in("Schema file exists.\n [O]verwrite\n [S]napshot\n [Q]uit\nWould you like to do?", array('o', 's', 'q'), 's'));
if ($result === 'q') {
return $this->_stop();
}
if ($result === 'o') {
$snapshot = false;
}
}
$content = $this->Schema->read($options);
$content['file'] = $this->params['file'];
if ($snapshot === true) {
$Folder = new Folder($this->Schema->path);
$result = $Folder->read();
$numToUse = false;
if (isset($this->params['snapshot'])) {
$numToUse = $this->params['snapshot'];
}
$count = 0;
if (!empty($result[1])) {
foreach ($result[1] as $file) {
if (preg_match('/schema(?:[_\\d]*)?\\.php$/', $file)) {
$count++;
}
}
}
if ($numToUse !== false) {
if ($numToUse > $count) {
$count = $numToUse;
}
}
$fileName = rtrim($this->params['file'], '.php');
$content['file'] = $fileName . '_' . $count . '.php';
}
if ($this->Schema->write($content)) {
$this->out(__('Schema file: %s generated', $content['file']));
$this->_stop();
} else {
$this->err(__('Schema file: %s generated'));
$this->_stop();
}
}
示例3: CakeSchema
function admin_export($id = null)
{
$this->layout = null;
$this->autoRender = false;
if (!$id) {
$this->Session->setFlash(__('Invalid Node Schema', true));
$this->redirect(array('action' => 'index'));
}
$this->NodeSchema->recursive = -1;
$this->set('node_schemas', $node_schemas = $this->NodeSchema->read(null, $id));
App::Import('CakeSchema');
$CakeSchema = new CakeSchema();
//debug($CakeSchema->tables);
//debug($CakeSchema->read(array('default', 'test')));
// The above only works for tables that have models, our models are only instantiated when needed in memory
$db =& ConnectionManager::getDataSource($node_schemas['NodeSchema']['datasource']);
//$tables = array();
$Model = new Model(null, $node_schemas['NodeSchema']['table_name'], $node_schemas['NodeSchema']['datasource']);
$Model->name = $Model->alias = Inflector::classify($node_schemas['NodeSchema']['table_name']);
$Object = ClassRegistry::init(array('class' => Inflector::pluralize($Model->name), 'ds' => $node_schemas['NodeSchema']['datasource']));
// These cause issues for one reason or another
unset($Object->tableToModel);
unset($Object->__associationKeys);
unset($Object->__associations);
unset($Object->_findMethods);
// The rest here just aren't needed, but don't cause any issues (not sure if it makes the export any faster, but makes the import php file smaller)
unset($Object->Behaviors);
unset($Object->useCache);
unset($Object->cacheSources);
unset($Object->alias);
unset($Object->recursive);
unset($Object->primaryKey);
unset($Object->table);
unset($Object->useTable);
unset($Object->displayField);
unset($Object->useDbConfig);
// This may eventually get used, if I can figure how to set it so it writes to the file
// This is weird and doesn't even seem right, but it renames the property and works
$Object->{$node_schemas}['NodeSchema']['table_name'] = $Object->_schema;
unset($Object->_schema);
$CakeSchema->path = $this->nodeSchemaPath;
$CakeSchema->file = $node_schemas['NodeSchema']['table_name'] . '.php';
$CakeSchema->write($Object);
if (file_exists($this->nodeSchemaPath . DS . $CakeSchema->file)) {
$file = $this->nodeSchemaPath . DS . $CakeSchema->file;
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Content-Length: " . filesize($file));
header("Content-Disposition: attachment; filename=" . $CakeSchema->file);
readfile($file);
} else {
$this->Session->setFlash(__('Could not export node schema, ensure the path: ' . $this->nodeSchemaPath . ' is writeable by the server.', true));
$this->redirect(array('action' => 'index'));
}
}