【发布时间】:2012-12-12 17:09:23
【问题描述】:
我有两个模型,分别称为 Person 和 Tag。一个人有很多标签,标签主键是person_id和tag的组合键(Doctrine2中的Person $person和$tag)。
Tag 模型中有一个数据字段(BLOB),里面有很多数据。我正在设置一个不需要来自该字段的数据的查询,所以我想设置一个不检索该字段的查询。
我尝试了以下查询:
SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags
在这里,我得到了一些预期的错误类标签的部分字段选择必须包含标识符。没问题,我添加联系人字段:
SELECT c, PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags
但是现在,我得到 类标签上没有名为“联系人”的映射字段。
Doctrine2 不支持对复合键的部分查询吗?
这里是标签类:
/** @Entity @Table(name="tag") **/
class Tag
{
/** @Id @ManyToOne(targetEntity="Contact",inversedBy="tags") @var Contact **/
protected $contact;
/** @Id @Column(type="string",length=10,nullable=false) @var string **/
protected $tag;
/** @Column(type="blob") **/
protected $data;
}
【问题讨论】:
-
您是否发现了更多有关此错误@Nils 的信息?
-
@jah,很遗憾没有。我不得不将 Tag 模型拆分为两个对象,以消除庞大的数据块。这样,我也可以在需要数据时选择 TagData 对象。不是一个非常优雅的解决方案,但易于理解和记录。
标签: php doctrine doctrine-orm composite-primary-key