我已經在Zend Framework 1.10上設置了Doctrine 2,並且擁有所有的自動加載設置,包括application.ini中所有必需的配置設置。我現在需要做的事情(或者我相信)是使用映射信息創建我的實體類,以便實體管理器可以使用我的數據庫。生成關於現有數據庫使用的映射信息原理2
我不想做的是手工編寫實體類,因爲這需要很長時間,但我似乎無法確定下一步該做什麼。命令行工具是否具有從現有模式創建實體,代理和所有其他必需類的功能?
我已經在Zend Framework 1.10上設置了Doctrine 2,並且擁有所有的自動加載設置,包括application.ini中所有必需的配置設置。我現在需要做的事情(或者我相信)是使用映射信息創建我的實體類,以便實體管理器可以使用我的數據庫。生成關於現有數據庫使用的映射信息原理2
我不想做的是手工編寫實體類,因爲這需要很長時間,但我似乎無法確定下一步該做什麼。命令行工具是否具有從現有模式創建實體,代理和所有其他必需類的功能?
您可以使用Doctrine http://www.doctrine-project.org/docs/orm/2.0/en/reference/tools.html#reverse-engineering
的逆向工程工具,但它也犯規檢測全部內容作爲參考指出。
你最好的選擇是反向工程,並用手動IMO填充其餘部分。
使用命令行工具:
./bin/doctrine orm:convert-mapping --from-database xml ./bin/tmp
這樣會生成XML映射。然後,確保配置主義CLI工具,當你更改驅動程序到XmlDriver
$driver = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array(
APPLICATION_PATH . '/../bin/tmp'
));
$config->setMetadataDriverImpl($driver);
我CLI配置使用Zend_Application,所以我通常在我的引導改變這一點。
現在運行
./bin/doctrine orm:generate-entities ./bin/tmp
的XML元數據驅動程序,以便需要orm:generate-entities
從XML轉換成實體。如果您使用默認註釋驅動程序,它會將註釋驅動程序路徑中的實體轉換爲實體,而這些實體不是我們想要的。
我現在已經設法爲我現有的數據庫生成yaml映射,並將它們放在APPLICATION_PATH「/ data/yaml」現在當我嘗試使用orm:generate-entities .. \ library \ Application \ Entity期待它從yaml映射生成實體類,它失敗並顯示消息「沒有要處理的元數據類」 – Kevin 2011-01-30 18:54:39
您是否曾經能夠找出導致「No metadata classes」錯誤的原因?只要我沒有在基於PHP的註釋中使用「newDefaultAnnotationDriver」,我就能夠使用YAML/XML生成映射。這讓我生氣了! – 2012-03-15 20:04:10