2012-04-04 25 views
14

Làm cách nào tôi có thể chuyển đối tượng DateTime của PHP làm giá trị cho trường cơ sở dữ liệu bằng cách sử dụng Doctrine \ DBAL?sử dụng phương thức insert() để chèn giá trị DateTime với PHP Doctrine DBAL 2

$ DB là một thuyết \ DBAL \ Kết nối dụ.

$DB->insert('table_name', [ 
    'field' => new \DateTime(), 
]); 

// Catchable fatal error: Object of class DateTime could not be converted to string 

Mã trên không hoạt động và tài liệu khan hiếm.

Tôi biết chắc chắn rằng bạn có thể cung cấp DateTime đối tượng trực tiếp sử dụng một phương pháp DBAL, là nó có thể làm điều này với chèn()?

+1

Tìm thấy giải pháp. Chỉ cần truyền mảng đối số thứ ba ('datetime') vào phương thức insert(). Sử dụng 'datetime' cho DateTime, PDO :: PARAM_STR cho chuỗi và PDO :: PARAM_INT cho số nguyên. –

Trả lời

23
$DB->insert('table_name', [ 
    'foo' => 'foo', 
    'bar' => 17, 
    'field' => new \DateTime(), 
], [ 
    PDO::PARAM_STR, 
    PDO::PARAM_INT, 
    'datetime', 
]); 

Bí quyết!))

+0

Điều gì về thứ tự của các phần tử trong mảng đầu tiên? Tôi đoán khi mảng các cặp khóa-giá trị được khai báo đúng như đối số hàm, thứ tự của các khóa sẽ khớp với thứ tự của chúng được khai báo, tuy nhiên nếu mảng cặp khóa-giá trị được tạo động bởi một số hàm khác thì sao? –

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