Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为这些实体编写DQL?_Php_Codeigniter_Doctrine_Doctrine Orm_Dql - Fatal编程技术网

Php 如何为这些实体编写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

我将实体视为DB屏幕截图:

你可以在这里看到截图->

我想通过提供一个TnRegion参数来获得TnModuleItem的对象数组

如何在DQL中编写以实现此查询

编辑:我想写一个这样的模型:

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子句。。。