Учение об ошибке OneToMany отношения
Я пытаюсь настроить некоторые отношения ManyToOne/OneToMany на объектах в моей базе данных, используя Doctrine (2.2.3+) через Symfony2 (2.3.0) и получаю странную ошибку. Вот соответствующие части объектов (многие атрибуты одного продукта):
/**
* Product
*
* @ORMTable(name="product")
* @ORMEntity
*/
class Product
{
/**
* @var integer
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
...
/**
*
* @OneToMany(targetEntity="ProductAttributes", mappedBy="product")
*/
protected $product_attributes;
public function __construct() {
$this->product_attributes = new DoctrineCommonCollectionsArrayCollection();
}
}
/**
* ProductAttributes
*
* @ORMTable(name="product_attributes")
* @ORMEntity
*/
class ProductAttributes
{
/**
* @var integer
*
* @ORMColumn(name="pa_id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $pa_id;
/**
* @var integer
*
* @ORMColumn(name="product_id", type="integer")
*/
protected $product_id;
...
/**
*
* @ManyToOne(targetEntity="Product", inversedBy="product_attributes")
* @JoinColumn(name="product_id", referencedColumnName="id")
*/
protected $product;
}
когда я запускаю
php app/console doctrine:generate:entities BundleName
Я получаю следующую ошибку:
[DoctrineCommonAnnotationsAnnotationException]
[Semantical Error] The annotation "@OneToMany" in property LVMountLVMBundleEntityProduct::$product_attributes was never imported. Did you maybe forget to add a "use" statement for this annotation?
Я просмотрел документы доктрины и не вижу никакой ссылки на утверждение " use " для Пары ManyToOne / OneToMany. Что происходит?
1 ответов
синтаксис ваших аннотаций не завершен.
вы можете увидеть правильный синтаксис для любой доктрины аннотации ниже.
/**
* @ORM\********
*/
Так, в вашем случае это должно выглядеть следующим образом.
/**
* @ORM\OneToMany(targetEntity="ProductAttributes", mappedBy="product")
*/
вы также захотите исправить аннотации в ProductAttributes
сущности.