2016-06-12 98 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格式是因爲它在問題中被引用。您也可以使用其他格式。 –