我正在寻找三种不同的模型/实体。一个称为Model:Idea
,一个称为Model:IdeaDetail
,另一个称为Model:IdeaDetailValue
。
IdeaDetail有几个不同的列,包括Idea
(数据库中的idea_id,但我的模型类中的$ idea对象)和IdeaDetailValue
(数据库中的idea_detail_value_id,但是$ ideaDetailValue作为模型中的对象)。
基本上,我要做的是通过查询Idea
来选择IdeaDetail
个对象列表。
$queryBuilder
->select('id.idea')
->from('Model:IdeaDetail', 'id')
->where('IDENTITY(id.ideaDetailValue) IN (:ideaDetailValueIds)')
->setParameter('ideaDetailValueIds', $ideaDetailValueIds)
->getQuery()
->getResult();
但这失败了,出现此错误:
[Semantical Error] line 0, col 10 near 'task FROM Model:IdeaDetail': Error: Invalid PathExpression. Must be a StateFieldPathExpression.
有谁知道进行此查询的正确方法?
由于
答案 0 :(得分:1)
选择id.idea
是错误的(根据错误,实际上您可能选择了id.task
),在这种情况下也不能使用IDENTITY()
。
您应该加入表格以达到预期效果。这样的事情应该有效:
$queryBuilder
->select('idea')
->from('Model:IdeaDetail', 'id')
->leftJoin('Model:IdeaDetailValue', 'idea')
->where('idea.id IN (:ideaDetailValueIds)')
->setParameter('ideaDetailValueIds', $ideaDetailValueIds)
->getQuery()
->getResult();