2016-06-12 76 views
3

有没有办法创建和修改动态数据库中的实体和表(从PHP脚本)?学说动态创建一个实体

例如,我想生成一个数组的实体:

fields{ 
    id: integer, 
    name: string, 
    ... and so on 
} 

而不是生成的表在BD

我只知道一个简单的解决方案:创建阳明海运或XML文件,从我的脚本运行控制台命令,或使用DBAL

回答

2

我只知道一个简单的解决方案:创建阳明海运或XML文件,并从我的脚本运行控制台命令,或使用DBAL

您还可以generate an entity from command line,例如:

$ php app/console generate:doctrine:entity --no-interaction \ 
    --entity=AcmeBlogBundle:Post \ 
    --fields="id:integer title:string(100) body:text" \ 
    --format=xml 

这使用SensioGeneratorBundle,即defined only in dev and test environments

所以,这是一个有点哈克但你需要调用与正确的环境中,该命令:

$ php app/console generate:doctrine:entity […] --env=dev 

Process component可以为了推出这个命令可以使用。

use Symfony\Component\Process\Process; 
use Symfony\Component\Process\Exception\ProcessFailedException; 

$command = 'php app/console generate:doctrine:entity --no-interaction '. 
    '--entity=AcmeBlogBundle:Post '. 
    '--fields="id:integer title:string(100) body:text" '. 
    '--format=xml'; 

$process = new Process($command); 
$process->run(); 

// executes after the command finishes 
if (!$process->isSuccessful()) { 
    throw new ProcessFailedException($process); 
} 

echo $process->getOutput(); 
+0

所以这将是生产系统的解决方案,以及:

所以,你可能有这样的事情结束了?和“--format = xml”部分生成一个表示实体的xml文件? – emfi

+0

我不会推荐这个生产系统,除非它经过严格测试。我使用XML格式是因为它在问题中被引用。您也可以使用其他格式。 –