Console命令,用于在成熟的Yii1项目中创建虚拟数据到DB



我有一个任务,为更好的本地开发准备一个web应用程序(服务)。在开发环境中,它使用部分从生产环境中转储的数据库。这种方法现在对我们来说不是最好的解决方案。所以我们只能转储DB的模式,然后用虚拟数据填充本地数据库。

我的目标:一个创建fixture的控制台命令。它可以是这样的,但它是Yii2:(.

在这种情况下,我面临几个问题:

  1. 我了解到Yii1有一个用于创建fixture的特殊工具-定义fixture,但它在关于测试的主题中进行了描述。使用这个工具达到我的目的有多难?我是否必须自己编写控制台命令,或者是否存在更简单的方法?
  2. 有人可以建议特殊库的fixture,我可以"插件和使用";ii及其活动记录?我想使用DoctrineFixturesBundle,但它只适用于ORM,对吧?

谢谢。

对于使用fixture,您可以执行以下操作:

创建一个新命令:

protectedcommandsFixtureCommand.php

包含以下内容:

<?php
Yii::import('system.test.CDbFixtureManager');
class FixtureCommand extends CConsoleCommand {
public function actionIndex() {

/* @var $fixtureManager CDbFixtureManager */
$fixtureManager=new CDbFixtureManager();
$fixtureManager->basePath=Yii::getPathOfAlias('application.my_fixtures');
$fixtureManager->init();
// Just print some info about the tables
foreach ($fixtureManager->getFixtures() as $name => $path) {
echo "Loaded {$name} table from {$path}n";
}

}
}

创建目录protected/my_fixtures

并创建一些fixture:

protectedmy_fixturesproject.php

<?php
return array(
array(
'name' => 'Red project',
'company' => 'Red Ltd',
'open' => 1,
),
array(
'name' => 'Blue project',
'company' => 'Blue Ltd',
'open' => 1,
),
array(
'name' => 'Green project',
'company' => 'Green Ltd',
'open' => 0,
),
);

protectedmy_fixturestask.php

<?php
return array(
array(
'project_id' => '1',
'description' => 'Get the milk',
'completed' => 1,
),
array(
'project_id' => '1',
'description' => 'Get the eggs',
'completed' => 1,
),
array(
'project_id' => '1',
'description' => 'Walk the dog',
'completed' => 0,
),
);

最后,进入终端,运行命令:

C:Projectsfixtureappprotected>c:xamppphp56php.exe yiic.php fixture
Loaded project table from C:Projectsfixtureappprotectedmy_fixturesproject.php
Loaded task table from C:Projectsfixtureappprotectedmy_fixturestask.php

你可以在Github上找到完整的示例项目:

https://github.com/atrandafir/yii-1-fixtures

其他建议:

  • 我希望您使用数据库迁移,以保持开发和生产实例之间的模式结构相同。
  • 我非常推荐阅读API, Yii类的文档,并有"勇气";要使用和定制它们,请随意打开类文件,看看它们究竟是做什么的
  • 如果当前的fixture管理器类不做你想要的,你也可以扩展和覆盖它的方法,甚至写一个新的基于原来的

相关内容

  • 没有找到相关文章

最新更新