【发布时间】:2015-11-25 04:21:28
【问题描述】:
我有一个这样的 ParentClass
/** @ORM\MappedSuperclass */
class BaseValue
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var field
* @ORM\OneToMany(targetEntity="Field", mappedBy="value", cascade="all")
*/
protected $field;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return field
*/
public function getField()
{
return $this->field;
}
/**
* @param field $field
*/
public function setField($field)
{
$this->field = $field;
}
}
还有这样的孩子
* @ORM\Entity
* @ORM\Table(name="integers")
*/
class Integer extends BaseValue
{
/**
* @var integer
*
* @ORM\Column(name="value", type="integer", nullable=true)
*/
protected $value;
/**
* @return string
*/
public function getValue()
{
return $this->value;
}
/**
* @param string $value
*/
public function setValue($value)
{
$this->value = $value;
}
}
现在我想像这样将孩子与另一个班级联系起来
* @ORM\Entity
* @ORM\Table(name="fields")
*/
class Field
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var
* @ORM\ManyToOne(targetEntity="BaseValue", mappedBy="field", cascade="all")
* @ORM\JoinColumn(name="vid", referencedColumnName="id")
*/
protected $value; // but it does not work
它总是给我以下错误:
[Doctrine\Common\Annotations\AnnotationException]
[创建错误] 在属性 zmpim\Entity\Field::$value 上声明的注释 @ORM\ManyToOne 没有名为“mappedBy”的属性。可用属性:targetEntity、cascade、fetch、inversedBy
两者都被映射了,..所以错误似乎毫无意义
更新:
一个字段有值和标签。这些值从 BaseValue 继承到 IntegerValue、StringValue 和后来的其他...
我的 OneToMany Relation 是继承的父类。 像这样,现在:
/** @ORM\MappedSuperclass */
class BaseValue
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var Field
* @ORM\OneToMany(targetEntity="Field", mappedBy="field", cascade="persist", orphanRemoval=true )
*/
protected $field;
这是我的多对一:
/**
*
* @ORM\Entity
* @ORM\Table(name="fields")
*/
class Field
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var int|null
* @ORM\ManyToOne(targetEntity="BaseValue", inversedBy="value")
* @ORM\JoinColumn(name="vid", referencedColumnName="id", onDelete="CASCADE")
*/
protected $value;
它仍然给我一个错误,但现在是:
[教义\ORM\ORMException]
从 zmpim\Entity\Field 到 zmpim\Entity\BaseValue 的关系引用的列名id不存在。
【问题讨论】:
标签: php zend-framework2 doctrine