【问题标题】:how to generate entities and schemas for enum in symfony如何在 symfony 中为枚举生成实体和模式
【发布时间】:2013-02-02 16:51:11
【问题描述】:

我正在尝试为我的联系信息生成实体。为此,我首先使用以下语法创建实体,其中我创建了一个枚举字段。

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

【问题讨论】:

  • 向我们展示您的实体部分以及来自 $gender 的注释。

标签: php symfony symfony-2.1


【解决方案1】:

您的注释格式不正确。 试试这个:

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

别忘了加上

mapping_types:
    enum: string

下面

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

app/config/config.yml 文件中。

关于学说here 中的枚举的更多信息。

【讨论】:

  • 根据您的建议更改后显示以下错误。 [Doctrine\ORM\Mapping\MappingException] 类“Banner\TestBundle\Entity\Contact”不是有效的实体或映射的超类。学说:生成:实体 [--path="..."] [--no-backup] 名称
  • 尝试从电话注释中删除长度。你不能指定一个整数的长度
  • 完成我对注释文件进行了更改,现在工作正常。感谢您的帮助
  • 您还可以根据文档映射到“varchar”。 docs.doctrine-project.org/en/2.0.x/cookbook/mysql-enums.html我不知道哪个更好。
  • 谢谢伙计。这是凌晨 4 点 33 分的救命稻草 :)
猜你喜欢
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多