2011-07-11 12 views
6

Tôi đang trong quá trình nâng cấp từ Doctrine 1.1.4 lên Doctrine 2.0.6 trong ứng dụng Zend của mình. Tôi đã cài đặt công cụ dòng lệnh Doctrine 2.Có thể tạo các lớp mô hình bằng Doctrine 2 trực tiếp từ cơ sở dữ liệu không?

Trong Doctrine 1.1.4, tôi đã tạo các lớp mô hình trực tiếp từ cơ sở dữ liệu (sử dụng Doctrine :: generateModelsFromDb()), có thể trong Doctrine 2 hay tôi phải thực hiện quá trình 'mapping' cung cấp các chú thích Docblock, XML hoặc YAML của các bảng.

Lý do tôi hỏi điều này là do có tùy chọn 'setAutoGenerateProxyClass' trong Doctrine 2, tôi có ấn tượng rằng điều này có nghĩa là nó sẽ tạo ra các lớp proxy từ đầu.

Đánh giá cao sự trợ giúp.

Trả lời

6

Autopenerate proxyclasses có nghĩa là về cơ bản Doctrine 2 sẽ tự động tạo "lớp proxy" cho các thực thể của bạn, thay vì chỉ tạo chúng theo cách thủ công bằng cách sử dụng các proxy tạo. Proxy được sử dụng khi bạn có quan hệ trong các thực thể của bạn và chúng cần phải được tải chậm.

Để tạo thông tin ánh xạ từ cơ sở dữ liệu, bạn có thể sử dụng chuyển đổi-mapping:

php doctrine orm:convert-mapping --from-database yml /path/to/mapping-path-converted-to-yml 

Gấu nhớ rằng đây chỉ nên được sử dụng như một điểm khởi đầu. Trình điều khiển cơ sở dữ liệu không thể tạo ra ánh xạ chính xác cho tất cả các kết hợp tùy chọn có thể, vì vậy bạn có thể chỉ nên chạy một lần này và sau đó tự viết bản đồ.

Xem Doctrine 2 manual, "Reverse Engineering the database"

3

Bạn có thể sử dụng "chú thích" như lái xe, nếu bạn muốn để có được các đối tượng được tạo ra:

php doctrine orm:convert-mapping --from-database annotation generatedModels