2014-07-03 68 views
0

我正在看三种不同的模型/实体。一个称为Model:Idea,一个称为Model:IdeaDetail,另一个称为Model:IdeaDetailValue选择对象与学说

IdeaDetail有几个不同的栏目,包括Idea(这是在数据库idea_id,但在我的模型类$理念对象)和IdeaDetailValue(在数据库idea_detail_value_id,但$ ideaDetailValue作为模型的对象)。

所以基本上,我想要做的是通过查询IdeaDetail来选择Idea对象的列表。

$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

这是错误的选择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();