Php &引用;“无映射字段”;在Doctrine2中使用部分查询和组合键时
我有两个模型,分别是Php &引用;“无映射字段”;在Doctrine2中使用部分查询和组合键时,php,doctrine,doctrine-orm,composite-primary-key,Php,Doctrine,Doctrine Orm,Composite Primary Key,我有两个模型,分别是Person和Tag。一个人有许多标签,标签主键是Person\u id和Tag的组合键(Doctrine2中的Person$Person和$Tag) 标记模型中有一个包含大量数据的数据字段(BLOB)。我正在设置一个不需要该字段数据的查询,因此我希望设置一个不检索该字段的查询 我尝试了以下查询: SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags 在这里,我得到了某种预期的错误,class标记的部分字段选择必
Person
和Tag
。一个人有许多标签,标签主键是Person\u id
和Tag
的组合键(Doctrine2中的Person$Person
和$Tag
)
标记
模型中有一个包含大量数据的数据字段(BLOB
)。我正在设置一个不需要该字段数据的查询,因此我希望设置一个不检索该字段的查询
我尝试了以下查询:
SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags
在这里,我得到了某种预期的错误,class标记的部分字段选择必须包含标识符。没问题,我添加了联系人字段:
SELECT c, PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags
但是现在,我发现类标记上没有名为“contact”的映射字段
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;
}
无论何时执行部分选择,都需要包含要从中选择的类的主键 您实际上还没有详细说明“Contact”实体,但我假设该类的主键字段是“id”。如果是这种情况,那么下面的查询将显示您的目标:
SELECT c, PARTIAL t.{id, tag} FROM Contact c LEFT JOIN c.tags
这似乎没有记录在案:(
您是否发现了有关此错误的更多信息@Nils?@jah,很遗憾,没有。我必须将标记模型拆分为两个对象,以消除巨大的数据块。这样,我可以在需要数据时选择标记数据对象。这不是一个非常优雅的解决方案,但易于理解和记录。