php - 映射学说错误

标签 php symfony doctrine-orm mapping

我正在 Symfony2 中创建一个项目,我正在创建实体并且我有一个 ManyToOne 关联,当我尝试从数据库中获取数据时我得到这个错误:

The association Ueb\Creator\Bundle\ModuleBundle\Entity\GenericBlock#fields refers to the owning side field Ueb\Creator\Bundle\ModuleBundle\Entity\GenericField#idGenericBlock which is not defined as association.
The association Ueb\Creator\Bundle\ModuleBundle\Entity\GenericBlock#fields refers to the owning side field Ueb\Creator\Bundle\ModuleBundle\Entity\GenericField#idGenericBlock which does not exist.

我有这门课的:

通用字段

 /**
  * GenericField
  *
  * @ORM\Table(name="crt_generic_field")
  * @ORM\Entity(repositoryClass="Ueb\Creator\Bundle\ModuleBundle\Entity\Repository\GenericFieldRepository")
 */
 class GenericField
 {
 /**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var integer
 *
 * @ORM\Column(name="id_generic_block")
 * @ORM\ManyToOne(targetEntity="Ueb\Creator\Bundle\ModuleBundle\Entity\GenericBlock", inversedBy="fields")
 * @ORM\JoinColumn(name="id_generic_block", referencedColumnName="id",nullable=false)
 */
private $idGenericBlock;

/**
 * @var integer
 *
 * @ORM\Column(name="id_field_type")
 * @ORM\ManyToOne(targetEntity="Ueb\Creator\Bundle\ModuleBundle\Entity\FieldTypes")
 * @ORM\JoinColumn(name="id_field_type", referencedColumnName="id",nullable=false)
 */
private $idFieldType;

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

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

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

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

/**
 * @var array
 *
 * @ORM\Column(name="adicional_info", type="array")
 */
private $adicionalInfo;

还有我的类 GenericBlock

/**
 * GenericBlock
 *
 * @ORM\Table(name="crt_generic_block")
 * @ORM\Entity(repositoryClass="Ueb\Creator\Bundle\ModuleBundle\Entity\Repository\GenericBlockRepository")
 */
 class GenericBlock
 {

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

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

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

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

/**
 * @var \DateTime
 *
 * @ORM\Column(name="createdAt", type="date")
 */
private $createdAt;

/**
 * @var integer
 *
 * @ORM\Column(name="createdBy")
 * @ORM\ManyToOne(targetEntity="Ueb\Accounts\Bundle\UserBundle\Entity\User")
 * @ORM\JoinColumn(name="createdBy", referencedColumnName="id",nullable=true)
 *
 */
private $createdBy;


/**
 * @var ArrayCollection
 * 
 * @ORM\OneToMany(targetEntity="Ueb\Creator\Bundle\ModuleBundle\Entity\GenericField", mappedBy="idGenericBlock", cascade={"all"})
 */
private  $fields;

我已经看到一些有相同错误的问题并尝试了建议的答案但没有任何效果所以我不知道还能做什么,这一定是一个愚蠢的错误。

最佳答案

这是前段时间的事,但我得出结论,@Column@JoinColumn 不能一起使用。如果您提交的是关系,您应该在那里省略 @Column。例如:

/**
 * @var integer
 *
 * @ORM\Column(name="id_generic_block") <--- ***remove this***
 * @ORM\ManyToOne(targetEntity="Ueb\Creator\Bundle\ModuleBundle\Entity\GenericBlock", inversedBy="fields")
 * @ORM\JoinColumn(name="id_generic_block", referencedColumnName="id",nullable=false)
 */
private $idGenericBlock;

希望这有助于...

关于php - 映射学说错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15952505/

相关文章:

php - 数据库中的多个联接

php - 如何将php代码放入jquery函数中

php - PHP 中 i18n 的最佳方式是什么

php - 检查用户名/密码是否与用户名/加密密码匹配。漩涡加密和盐

symfony - Doctrine - 在 onFlush 事件监听器中获取旧值

php - Symfony 4 自定义反序列化器返回实体中的空属性

php - Doctrine2 应该自动合并相关实体

php - 没有外键约束的 Doctrine 2 关联

symfony - 有效地迭代大型 OneToMany – ManyToOne 关联

symfony - 在 Symfony 命令中运行时,Doctrine load fixtures --no-interaction 标志不起作用