2011-11-17 22 views
13

Tôi đang sử dụng oracle và tôi recieving lỗi này:Làm thế nào để sử dụng Doctrine OracleSessionInit listener với Symfony2?

Could not convert database value "17-NOV-11 12.17.33 AM" to Doctrine Type datetime. Expected format: Y-m-d H:i:s

Ngoài ra tôi không thể tạo ra các hàng mới vì khiếu nại oracle về định dạng datetime.

Tôi biết rằng định dạng datetime mysql và oracle là khác nhau.

Tôi hiểu rằng bạn có thể sử dụng các thính giả thuyết với symfony 2:

http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html

Và, there'sa thuyết nghe tạo ra để khắc phục vấn đề này:

thuyết/DBAL/Sự kiện/Thính giả/OracleSessionInit.php

câu hỏi đặt ra là làm sao chính xác đến lượt nó trên của bạn trong symfony 2.

+0

Cảm ơn, bạn đã cứu tôi rất nhiều thời gian !!! Lưu ý: điều này dường như cũng hoạt động với Symfony 3 –

Trả lời

15

Vâng Có vẻ như tôi sẽ tự trả lời lần này.

Bạn phải thêm nó làm dịch vụ sử dụng thẻ sự kiện.

app/config/config.yml 

services: 
    my.listener: 
     class: Doctrine\DBAL\Event\Listeners\OracleSessionInit 
     tags: 
      - { name: doctrine.event_listener, event: postConnect } 

my.listener là tên tùy ý cho người nghe.

7

Trong trường hợp của tôi, Oracle là kết nối thứ hai (được lưu trữ dưới phím oracle). Ứng dụng này cũng sử dụng PostgreSQL (được lưu trữ theo khóa mặc định).

Sự cố là Trình xử lý được thực hiện trên cơ sở dữ liệu mặc định (PostgreSQL). Vì vậy, tôi đã thay đổi mã thành:

services: 
    my.oracle.listener: 
     class: Doctrine\DBAL\Event\Listeners\OracleSessionInit 
     tags: 
      - { name: doctrine.event_listener, event: postConnect, connection: oracle } 

Và tất cả đều hoạt động tốt!

-2

Tôi nghĩ rằng liên kết này sẽ giúp bạn:

Đang kết nối đến Oracle với Symfony2 và Doctrine 2.

  1. Bản đồ kiểu NGÀY Oracle để "hẹn hò" Học thuyết của gõ thay vì "datetime" cho Oracle lái xe
  2. Cấu hình đúng Doctrine để sử dụng các cấu hình môi trường Oracle Date và DateTime phổ biến nhất. Bạn có thể hoặc không cần điều này. Kiểm tra cấu hình máy chủ Oracle của bạn

https://gist.github.com/johnkary/6481664#file-oracledoctrinetypemappinglistener-php

+0

Một liên kết đến giải pháp tiềm năng luôn được chào đón, nhưng vui lòng [thêm ngữ cảnh xung quanh liên kết] (// meta.stackoverflow.com/a/8259) để người dùng đồng nghiệp của bạn sẽ có một số ý tưởng nó là gì và tại sao nó ở đó. Luôn trích dẫn phần có liên quan nhất của một liên kết quan trọng, trong trường hợp trang web mục tiêu không thể truy cập được hoặc sẽ vĩnh viễn ngoại tuyến. Hãy xem xét rằng * chỉ lớn hơn một liên kết đến một trang bên ngoài * là [lý do có thể cho câu trả lời của bạn sẽ bị xóa] (// stackoverflow.com/help/deleted-answers). –

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