我与Symfony2陷入了一种奇怪的行为。
我有一个代表我的应用程序中的文档的实体。该实体与具有ManyToOne关系的另外两个实体相关联 这是班级:
实体\ Document.php
namespace Acem\APPBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="documents")
*/
class Document
{
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="Resource", inversedBy="documents")
* @ORM\JoinColumn(name="resource_id", referencedColumnName="id", nullable=false)
*/
protected $resource;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="User", inversedBy="documents")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
protected $owner;
/**
* ORM\Column(type="boolean")
*/
protected $enabled;
/**
* ORM\Column(type="string")
*/
protected $title;
/**
* ORM\Column(type="int")
*/
protected $value;
}
我的问题是,学说只生成一个包含两列resource_id
和user_id
的表,但其他字段完全被忽略。
当我使用doctrine:generate:entities
时会发生同样的事情,getter / setter仅针对具有ManyToOne关系的两个属性生成,但其他属性似乎不存在于Doctrine中。
什么可能导致这种奇怪的行为以及如何解决它?
谢谢
答案 0 :(得分:2)
为每个字段引用添加Leg.objects.all().order_by('date').prefetch_related(
Prefetch('cyclist',
queryset=Cyclist.objects.filter(id=cyclist.id),
to_attr='related_cyclist')
)
#this way every leg will have a attr `related_cyclist`
#which will be whether an empty list or a list with one element - your cyclist object.
for l in legs:
print l.related_cyclist
符号。它看起来像@
。