2010-07-31 18 views
26

Tôi có một lĩnh vực DateTime:thuyết 2: Gọi đến một định dạng hàm thành viên() trên một tổ chức phi vật thể ... trong DateTimeType.php

/** 
* Date time posted 
* @Column(type="datetime") 
*/ 
private $dtPosted; 

mà được đặt thành một giá trị mặc định bằng cách sử dụng một LifeCycleCallback

/** 
* @PrePersist 
*/ 
function onPrePersist() { 
    // set default date 
    $this->dtPosted = date('Y-m-d H:m:s'); 

tôi nhận được lỗi sau:

Fatal error: Call to a member function format() on a non-object in D:\ResourceLibrary\Frameworks\Doctrine\lib\Doctrine\DBAL\Types\DateTimeType.php on line 46

Trả lời

55

các date() funct ion trả về một chuỗi. Loại datetime hoạt động với các đối tượng DateTime. Vì vậy, hãy thay đổi loại ánh xạ thành string hoặc sử dụng các đối tượng DateTime.

+10

bạn nói đúng. i shld sử dụng 'date_create (ngày (...))' hoặc 'DateTime :: __ construct()' –

+0

@JiewMeng: giải pháp tuyệt vời, cảm ơn! – Ron

3

tôi tình cờ gặp một vấn đề tương tự, nhưng với một lĩnh vực time, và câu hỏi này và câu trả lời @romanb 's giúp.

Tôi đã nhận được lỗi sau, giống như lỗi trong câu hỏi.

Call to a member function format() on a non-object in 
... /vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php on line 50 

Giải pháp là tương tự, cho các lĩnh vực của time datatype, Học thuyết sẽ chấp nhận một thể hiện của PHP DateInterval

$quizFixture1->setCompletionTime(\DateInterval::createFromDateString('743 seconds')); 
4

Hãy thử và sử dụng của bạn setCreated với các chú thích cho @ORM \ PrePersist và setUpdated với các chú thích cho các phương thức @ORM \ PrePersist và @ORM \ PreUpdate ngược lại với các phương thức prePersist và preUpdate ...

/** 
* @ORM\PrePersist 
*/ 
public function setCreated() 
{ 
    $this->created = new \DateTime(); 
} 

/** 
* @ORM\PrePersist 
* @ORM\PreUpdate 
*/ 
public function setUpdated() 
{ 
    $this->updated = new \DateTime(); 
} 
Các vấn đề liên quan