Php 如何在symfony中为enum生成实体和模式
我正在尝试为我的联系信息生成实体。为此,我使用以下语法创建了第一个实体,其中我创建了一个枚举字段Php 如何在symfony中为enum生成实体和模式,php,symfony,symfony-2.1,Php,Symfony,Symfony 2.1,我正在尝试为我的联系信息生成实体。为此,我使用以下语法创建了第一个实体,其中我创建了一个枚举字段 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: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
请帮忙,因为我是新来的
这里是联系人实体文件
<?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;
}
}
您的批注格式不正确。
试试这个:
@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
文件中
更多关于enum的信息,请参见条令 向我们显示实体中带有$SEXT注释的部分。根据您的建议进行更改后,将显示以下错误。[Doctrine\ORM\Mapping\MappingException]类“Banner\TestBundle\Entity\Contact”不是有效的实体或映射的超类。条令:generate:entities[--path=“…”][--no backup]name尝试从手机批注中删除长度。你不能指定整数的长度,我已经在anotation文件中做了更改,现在工作正常。感谢您的帮助。您还可以根据文档映射到“varchar”。我不知道哪个更好。谢谢你。这是凌晨4:33的救命恩人:)