Php 如何为这些实体编写DQL?
我将实体视为DB屏幕截图: 你可以在这里看到截图-> 我想通过提供一个TnRegion参数来获得TnModuleItem的对象数组 如何在DQL中编写以实现此查询 编辑:我想写一个这样的模型:Php 如何为这些实体编写DQL?,php,codeigniter,doctrine,doctrine-orm,dql,Php,Codeigniter,Doctrine,Doctrine Orm,Dql,我将实体视为DB屏幕截图: 你可以在这里看到截图-> 我想通过提供一个TnRegion参数来获得TnModuleItem的对象数组 如何在DQL中编写以实现此查询 编辑:我想写一个这样的模型: public function get_module_items_by_region_id($region_id){ // code comes here return $tnModuleItemsObj //TnModuleItemsObject } 如果您尝试以下方法: <?php pub
public function get_module_items_by_region_id($region_id){
// code comes here
return $tnModuleItemsObj //TnModuleItemsObject
}
如果您尝试以下方法:
<?php
public function get_module_items_by_region_id($region_id){
$query = $em->createQuery('SELECT i FROM \namespace\TnRegionModuleItem as i WHERE i.regionId = :region_id');
$query->setParameter('region_id', $region_id)
return $query->getResult()
}
?>
当然,您应该从某个地方获取entitymanager并将其放入变量$em中,在我的例子中,我使用Bisna'glue'for Zend Framework,并通过Zend_注册表检索它,但在您的例子中可能会有所不同
通过结果值,您可以对每个模块项进行访问,每个元素都是一个tnModuleItem对象
祝你好运 好的。我解决了这个问题:
$query = $this->em->createQuery('SELECT rmi, mi FROM TnRegionModuleItem rmi JOIN rmi.moduleItem mi JOIN rmi.pageRegion pr JOIN pr.region r WHERE r.id = :regionid');
必须选择根实体。我真的不明白您的问题,您想要检索的确切结果是什么?请编辑您的帖子。刚刚编辑。希望您能理解。按区域获取模块项在哪里?实体?你有关系吗?我有实体:TnModuleItem、TnPage、TnRegion、TnPageRegion、TnRegionModuleItem等。。我只想写一个模型函数来获取一个区域参数并给出相关的模块项。我使用的是Doctrine和Codeigniter。它在我等待时出现此错误:TnRegionModuleItem没有名为regionIdi的字段或关联。我必须在TnPageRegion之后设置一个关联TnRegionModuleItem与TnPageRegion的关联。我能做些什么呢?您不需要为这个特定的查询设置一个asocation,但是最好将tn_region_module_项的多个关系设置为一个jointable。您可能会遇到错误,因为我刚刚猜到了查询的where部分的regionId字段。请发布完整的实体类,我将用更完整的示例编辑我的帖子。已添加。谢谢你的支持。正在等待您并尝试其他选项:尝试此操作:从TnRegionModuleItem rmi中选择mi,TnModuleItem mi加入rmi.pageRegion pr,其中pr.region=3给我此错误:找不到列:1054未知列“t1”。page\u region\u id“in”on子句。。。