2010-01-22 43 views
5

Tôi đã nghiên cứu một cách để có được các câu lệnh SQL được xây dựng bởi một tệp Migration được tạo. Chúng mở rộng Doctrine_Migration_Base. Về cơ bản tôi muốn lưu SQL dưới dạng tập lệnh thay đổi.Lấy SQL từ Doctrine Migration

Đường dẫn thực hiện dẫn tôi đến Doctrine_Export có các phương thức xây dựng câu lệnh SQL và thực thi chúng. Tôi không tìm được cách nào để yêu cầu họ. Các phương thức export được tìm thấy trong Doctrine_Export chỉ hoạt động trên các mô hình Doctrine_Record chứ không phải các kịch bản Migration.

Từ dòng lệnh './doctrine di chuyển phiên bản #' con đường đi:

  • Doctrine_Cli :: chạy (cmd)
  • Doctrine_Task_Migrate :: setArguments (args)
  • Doctrine_Task_Migrate :: thực hiện()
  • Doctrine_Migration :: di chuyển (để)
  • Doctrine_Migration_Process :: Doctrine_Export :: khác nhau tạo, thả, thay đổi phương pháp với sql equi valents.

Có ai đã giải quyết vấn đề này trước đây không? Tôi thực sự không muốn thay đổi các tệp cơ sở Doctrine. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Trả lời

0

Có tính gợi ý tài khoản Rob Farley, tôi chỉnh sửa:

  • Doctrine_Core :: di chuyển
  • Doctrine_Task_Migrate :: thực hiện

Khi thực hiện phương pháp được gọi là đối số tùy chọn 'dryRun' là đã kiểm tra. Nếu đúng thì một phiên bản 'Doctrine_Connection_Profiler' được tạo. Giá trị 'dryRun' sau đó được chuyển sang phương thức 'Doctrine_Core :: migrate' theo phương pháp 'Doctrine_Core :: migrate'. Giá trị 'dryRun' của true cho phép thay đổi rollback khi thực hiện xong các câu lệnh SQL. Khi phương thức trả về, lược tả được phân tích cú pháp và các câu lệnh SQL không trống rỗng không chứa 'migration_version' được lưu và hiển thị cho thiết bị đầu cuối.

0

Bạn có thể tạo một máy chủ dev và thực hiện di chuyển trên đó, lưu trữ một Dấu vết SQL khi bạn đi không? Bạn không cần phải giữ kết quả, nhưng bạn sẽ nhận được danh sách mọi lệnh.

+0

Thú vị. Tôi sẽ nhìn vào đó và lấy lại cho bạn. Tôi cảm thấy tôi có thể phải sửa đổi các tập tin Doctrine cơ sở dù việc triển khai CLI của họ còn thiếu. Có một tùy chọn dryRun có sẵn mà Doctrine_Task_Migrate thậm chí không bận tâm kiểm tra. Về cơ bản, 2 tùy chọn mà tôi sắp sửa là: Thêm tùy chọn dryRun, chạy di chuyển với dryRun và SQL Trace để nắm bắt các câu lệnh. Hoặc Cùng với tùy chọn dryRun, thêm tùy chọn khác để chỉ xuất các câu lệnh SQL , điều này sẽ yêu cầu tệp Doctrine_Migration_Process đã sửa đổi, có lẽ tôi sẽ gọi nó là Doctrine_Migration_GetSQL. –

+0

Âm thanh hợp lệ. Chắc chắn SQL Trace là một cách tốt để nhận các lệnh. –

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