php – 在Doctrine2中使用部分查询和复合键时,“无映射字段”
发布时间:2020-12-13 13:28:14 所属栏目:PHP教程 来源:网络整理
导读:我有两个名为Person和Tag的模型.一个人有很多标签,标签主键是person_id和标签的复合键(Person $person和Doctrine2中的$tag). Tag模型中有一个包含大量数据的数据字段(BLOB).我正在设置一个不需要该字段数据的查询,因此我想设置一个不检索该字段的查询. 我试
我有两个名为Person和Tag的模型.一个人有很多标签,标签主键是person_id和标签的复合键(Person $person和Doctrine2中的$tag).
Tag模型中有一个包含大量数据的数据字段(BLOB).我正在设置一个不需要该字段数据的查询,因此我想设置一个不检索该字段的查询. 我试过以下查询: SELECT c,PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags 在这里,我得到了一些预期的错误.类Tag的部分字段选择必须包含标识符.没问题,我添加联系人字段: SELECT c,PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags 但是现在,我得到了类Tag上没有名为“contact”的映射字段. Doctrine2不支持对复合键进行部分查询吗? 这是Tag类: /** @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; }
每当执行部分选择时,您需要包含要从中选择的类的主键.
您实际上没有详细说明您的“联系”实体,但我假设该类的主键字段是“id”.如果是这种情况,那么以下查询将实现您的目标: SELECT c,PARTIAL t.{id,tag} FROM Contact c LEFT JOIN c.tags 这似乎没有记录:( http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#partial-object-syntax (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |