2012-05-20 36 views

Trả lời

18

Sử dụng SchemaTool và EntityManager bạn có thể làm điều này:

$schemaTool = new \Doctrine\ORM\Tools\SchemaTool($entityManager); 
$classes = $entityManager->getMetadataFactory()->getAllMetadata(); 
$schemaTool->createSchema($classes); 
+0

làm thế nào tôi có thể xác định lược đồ đó được tạo trước hay không? –

+0

Tôi không tin rằng có một cách để xem liệu lược đồ đã được tạo chưa. Theo kinh nghiệm của tôi, tôi đã sử dụng '$ schemaTool-> dropSChema ($ classes)' trước khi tạo nó. – trevorengstrom

+1

@ Sina Miandashti bạn cũng có thể thực hiện thử. 'try {// here create table code} catch (\ Doctrine \ ORM \ Tools \ ToolsException $ exc) {// Bảng tồn tại}' – Hokusai

4

Tôi không chắc chắn những gì bạn muốn làm, nhưng nếu bạn muốn làm điều đó từ mã php, bạn có thể kiểm tra cách lệnh doctrine hoạt động và sao chép mã. Bạn có thể tìm thấy tại đây:

vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/CreateDatabaseDoctrineCommand.php 

Nếu bạn kiểm tra phương pháp thực thi, bạn sẽ thấy cách thực hiện. Rõ ràng bạn cần có một kết nối thông qua trình điều khiển DBManager, cho phép bạn truy cập vào một đối tượng lược đồ, do đó có một phương thức createDatabase. Tôi đã không cố gắng điều này bản thân mình.

Các vấn đề liên quan