2011-10-08 4 views
8

sto cercando di aggiungere l'utente al mio database tramite Dottrina 2.1 progetto e sto ricevendo questo tipo di errore:Dottrina 2.1 - errore nel DateTimeType

Fatal error: Call to a member function format() on a non-object in C:...\Doctrine\DBAL\Types\DateTimeType.php on line 44

tabella del database stesso creato senza problemi. Cosa potrebbe esserci di sbagliato con il mio codice seguente?

<?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; } 
} 

Grazie per l'aiuto in anticipo.

+0

possibile duplicato del [Dottrina 2.1 - datetime valore colonna di default] (http://stackoverflow.com/questions/7698625/doctrine-2-1-datetime-column-default- valore) –

+0

Hai anche un errore in 'setBirthDate()'. – FtDRbwLXw6

risposta

18

Dottrina richiede date(time) colonne per contenere DateTime oggetti. Quindi, in effetti il ​​vostro costruttore dovrebbe leggere

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

Grazie! Questo è! :) –

1

sono sicuro che sia qualcosa con la __construct()

+1

Ma sai cosa; o? –