Doctrine 2.1 - DateTimeType中的错误

时间:2011-10-08 18:09:24

标签: php doctrine doctrine-orm

我正在尝试通过Doctrine 2.1项目将用户添加到我的数据库中,我遇到了这样的错误:

  

致命错误:在第44行的C:... \ Doctrine \ DBAL \ Types \ DateTimeType.php中的非对象上调用成员函数format()

数据库表本身创建没有问题。我的以下代码可能有什么问题?

<?php
/**
 * @Entity @Table(name="users")
 */
class User {
    /**
     * @Id @GeneratedValue @Column(type="integer")
     * @var string
     */
    protected $id;

    /**
     * @Column(type="string", length=20, unique=TRUE)
     * @var string
     */
    protected $login;

    /**
     * @Column(type="string", length=50, nullable=TRUE)
     * @var string
     */
    protected $nickname;

    /**
     * @Column(type="string", length=50, nullable=TRUE)
     * @var string
     */
    protected $firstname;

    /**
     * @Column(type="string", length=50, nullable=TRUE)
     * @var string
     */
    protected $lastname;

    /**
     * @Column(type="string",length=100)
     * @var string
     */
    protected $email;

    /**
     * @Column(type="string",length=24)
     * @var string
     */
    protected $password;

    /**
     * @Column(type="string", length=50, nullable=TRUE)
     * @var string
     */
    protected $city;

    /**
     * @Column(type="date", nullable=TRUE)
     * @var string
     */
    protected $birth_date;

    /**
     * @Column(type="text", nullable=TRUE)
     * @var string
     */
    protected $description;

    /**
     * @Column(type="boolean")
     * @var boolean
     */
    protected $activation = FALSE;

    /**
     * @Column(type="datetime", nullable=TRUE)
     */
    protected $registration_date;

    /**
     * @Column(type="datetime", nullable=TRUE)
     */
    protected $login_date;

    /**
     * @Column(type="integer")
     * @var integer
     */
    protected $forum_posts_amount = 0;

    /**
     * @Column(type="integer", length=3)
     * @var integer
     */
    protected $forum_group = 0;

    /**
     * @Column(type="integer")
     * @var integer
     */
    protected $comments_amount = 0;

    /**
     * @Column(type="boolean")
     * @var boolean
     */
    protected $newsletter = FALSE;

    public function __construct() {
        $this->registration_date = date("Y-m-d H:i:s");
    }

    public function getId() { return $this->id; }

    public function getLogin() { return $this->login; }
    public function setLogin($login) { $this->login = $login; }

    public function getNickname() { return $this->nickname; }
    public function setNickname($nickname) { $this->nickname = $nickname; }

    public function getFirstname() { return $this->firstname; }
    public function setFirstname($firstname) { $this->firstname = $firstname; }

    public function getLastname() { return $this->lastname; }
    public function setLastname($lastname) { $this->lastname = $lastname; }

    public function getEmail() { return $this->email; }
    public function setEmail($email) { $this->email = $email; }

    public function getPassword() { return $this->password; }
    public function setPassword($password) { $this->password = $password; }

    public function getCity() { return $this->city; }
    public function setCity($city) { $this->city = $city; }

    public function getBirthDate() { return $this->birth_date; }
    public function setBirthDate($birth_date) { $this->birth_date = $city; }

    public function getDescription() { return $this->description; }
    public function setDescription($description) { $this->description = $description; }

    public function setLoginDate($login_date) { $this->login_date = $login_date; }

    public function getForumGroup() { return $this->forum_group; }
    public function setForumGroup($forum_group) { $this->forum_group = $forum_group; }

    public function getCommentsAmount() { return $this->comments_amount; }
    public function boostCommentsAmount() { $this->comments_amount++; }

    public function getNewsletter() { return $this->newsletter; }
    public function setNewsletter($newsletter) { $this->newsletter = $newsletter; }
}

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:18)

Doctrine要求date(time)列包含DateTime个对象。所以实际上你的构造函数应该是

public function __construct() {
    $this->registration_date = new \DateTime();
}

答案 1 :(得分:1)

我确信它与__construct()

有关