2013-02-18 7 views
12

私の連絡先のエンティティを生成しようとしています。そのためには、最初にenumフィールドを作成したところで、次の構文でEntityを作成しています。symfonyでenumのエンティティとスキーマを生成する方法

php app/console doctrine:generate:entity --entity="BannerTestBundle.contact" --fields="name:string(255) lastname:string(255) phone:integer(10) gender:enum("male","female") message:text". 

上記のコマンドはエンティティクラスを生成しますが、クラスから「エンティティ」を生成しようとすると、コマンドがエラーを表示します。

php app/console doctrine:generate:entities Banner/TestBundle/Entity/contact 

次のエラーが表示されます。私は、次のフィールドでデータベースを生成したい

[Doctrine\Common\Annotations\AnnotationException] 
[Semantical Error] Couldn't find constant male, property Banner\TestBundle\ 
Entity\contact::$gender. 

doctrine:generate:entities [--path="..."] [--no-backup] name 

Contact.table 
Name-string(255) 
LastName-string(255) 
Phone:integer(10) 
gender:enum("male","female") 
message:text 

私はsymfonyのここ

に新しいですと、それに助けてくださいは、連絡先のエンティティが

<?php 

    namespace Banner\TestBundle\Entity; 

    use Doctrine\ORM\Mapping as ORM; 

    /** 
* contact 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Banner\TestBundle\Entity\contactRepository") 
*/ 
class contact 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* 
* @ORM\Column(name="name", type="string", length=255) 
*/ 
private $name; 

/** 
* @var string 
* 
* @ORM\Column(name="lastname", type="string", length=255) 
*/ 
private $lastname; 

/** 
* @var enum 
* 
* @ORM\Column(name="gender", type="enum", length=male,female) 
*/ 
private $gender; 

/** 
* @var integer 
* 
* @ORM\Column(name="phone", type="integer", length=12) 
*/ 
private $phone; 

/** 
* @var string 
* 
* @ORM\Column(name="message", type="text") 
*/ 
private $message; 


/** 
* Get id 
* 
* @return integer 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

/** 
* Set name 
* 
* @param string $name 
* @return contact 
*/ 
public function setName($name) 
{ 
    $this->name = $name; 

    return $this; 
} 

/** 
* Get name 
* 
* @return string 
*/ 
public function getName() 
{ 
    return $this->name; 
} 

/** 
* Set lastname 
* 
* @param string $lastname 
* @return contact 
*/ 
public function setLastname($lastname) 
{ 
    $this->lastname = $lastname; 

    return $this; 
} 

/** 
* Get lastname 
* 
* @return string 
*/ 
public function getLastname() 
{ 
    return $this->lastname; 
} 

/** 
* Set gender 
* 
* @param \enum $gender 
* @return contact 
*/ 
public function setGender(\enum $gender) 
{ 
    $this->gender = $gender; 

    return $this; 
} 

/** 
* Get gender 
* 
* @return \enum 
*/ 
public function getGender() 
{ 
    return $this->gender; 
} 

/** 
* Set phone 
* 
* @param integer $phone 
* @return contact 
*/ 
public function setPhone($phone) 
{ 
    $this->phone = $phone; 

    return $this; 
} 

/** 
* Get phone 
* 
* @return integer 
*/ 
public function getPhone() 
{ 
    return $this->phone; 
} 

/** 
* Set message 
* 
* @param string $message 
* @return contact 
*/ 
public function setMessage($message) 
{ 
    $this->message = $message; 

    return $this; 
} 

/** 
* Get message 
* 
* @return string 
*/ 
public function getMessage() 
{ 
    return $this->message; 
} 
} 
+0

$ genderのアノテーションを使用してエンティティの一部を表示します。 – Stony

答えて

21

あなたのファイルですアノテーションが適切な形式ではありません。 このお試しください:

@ORM\Column(name="gender", type="string", columnDefinition="enum('male', 'femelle')") 

をそしてapp/config/config.ymlファイルに

doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     port:  %database_port% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 
     charset: UTF8 

以下

mapping_types: 
    enum: string 

を追加することを忘れないでください。

doctrineの列挙型の詳細情報here

+0

あなたの提案に応じて変更した後、それは以下のエラーを表示します。 [Doctrine \ ORM \ Mapping \ MappingException] "Banner \ TestBundle \ Entity \ Contact"クラスは有効なエンティティまたはマップされたスーパークラスではありません。 doctrine:generate:entities [--path = "..."] [ - no-backup] name –

+0

電話の注釈から長さを削除してみます。長さを整数に指定することはできません – Pierrickouw

+0

同じエラーが再び発生します –

関連する問題