选择具有学说的对象

时间:2014-07-03 07:50:17

标签: symfony doctrine

我正在寻找三种不同的模型/实体。一个称为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. 

有谁知道进行此查询的正确方法?

由于

1 个答案:

答案 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();