草庐IT

Doctrine_RawSql

全部标签

php - Pagerfanta 和 Doctrine2 COUNT 优化

我将Pagerfanta和DoctrineAdapters与Symfony2和Silex一起使用。随着我的数据库变大,我注意到管理统计页面上的巨大负载,这些页面显示带有分页的大数据。我检查了探查器,发现查询效率低得令人难以置信:SELECTDISTINCTid16FROM(SELECTf0_.usernameASusername0,...,f0_.added_onASadded_on20FROMfos_userf0_ORDERBYf0_.idDESC)dctrn_resultLIMIT50OFFSET0;SELECTCOUNT(*)ASdctrn_countFROM(SELECTf0_

自定义捆绑包配置中的Doctrine Resolve_target_entities

我制作了一个Symfony3捆绑包,该捆绑包具有抽象模型以进行进一步的可扩展性。就像是用户fos\userBundle中的型号。但是,与FOS的捆绑包不同,我的需求也需要在这些模型\实体之间建立关系。我设法通过接口和学说的配置来做到这一点。因此,目前,我必须做2件事要配置-假设-我的\custombundle。在应用程序/config/config.yml中,我必须添加:[...]doctrine:orm:[...]resolve_target_entities:My\CustomBundle\Model\Entity1Interface:AppBundle\Entity\Entity1My\

mysql - Doctrine - 获取下一条和上一条记录

所以我已经获取了一些记录。我有日期字段“创建”,现在我想按日期获取下一条和上一条记录。让它工作:$qb=$this->createQueryBuilder('a');$next=$qb->expr()->gt('a.created',':date');$prev=$qb->expr()->lt('a.created',':date');$prev=$qb->select('partiala.{id,title,created}')->where($prev)->setParameter('date',$date)->orderBy('a.created','DESC')->setMax

mysql - Doctrine 中的简单 IF 测试语句

Doctrine是否支持IF语句?我收到以下错误:Expectedknownfunction,got'IF'在使用IF执行此查询时:$qb->select("c.id,IF(c.type_idLIKE9,c.name,c.lastname)asname")用纯SQL重写时它工作正常。有什么解决方法吗? 最佳答案 是的ifDoctrine中的陈述不被支持,您可以将其转换为casewhenIF(c.type_idLIKE9,c.name,c.lastname)asname到casewhenc.type_id=9thenc.nameels

php - 使用 Doctrine 获取多行、单列数组

我有一个这样的Doctrinefetch语句$query="SELECTidFROMtableLIMIT2";$result=$db->fetchAll($query);它返回这样的数组:Array([0]=>Array([id]=>1)[1]=>Array([id]=>2))因为我获取的唯一列是ID,所以我不需要数组范围那么深。有没有一种方便的方法可以使Doctrine以“平面”数组的形式返回结果,类似于PDO所做的:$result=$db->query($query)->fetchAll(PDO::FETCH_COLUMN);会回来Array([0]=>1[1]=>2)目前我正在使

php - Doctrine 2 中与单个实体的父子关系

我有这样的数据库表:+----+--------+--------------------+|id|parent|description|+----+--------+--------------------+|1|null|PCat1||2|1|Child1ofPCat1||3|1|Child2ofPCat1||4|null|PCat2||5|4|Child1ofPCat2||6|4|Child2ofPCat2|+----+--------+--------------------+HowcanIcreateadoctrine2entitythathasthesecolumns,bu

mysql - Symfony+ Doctrine : Correct YAML syntax for default value of boolean field

我正在为我的Symfony应用程序设计架构,我需要将两个bool字段的默认值设置为false。但是,通过我尝试过的所有方法,当生成sql时,它带有default关键字,但后面没有默认值。我最后一次尝试是:negotiable:type:booldefault:"false"complete:type:booldefault:"false"但我也尝试过default:false,default:'false',default:0因为false只是0的别名在MySQL中,default:'0'查询失败:CREATETABLEdormcode_project(idBIGINTAUTO_INC

php - 如何在 Doctrine 中选择最近 2 小时的行

我正在尝试从Symfony/Doctrine单元中选择最近2小时的行。在普通的MySQL中,这将像这样完成:SELECT*FROMPostsWHERE日期>SUBDATE(CURRENT_TIMESTAMP,INTERVAL2HOUR)但是Doctrine不支持SUBDATE和INTERVAL这些MySQL关键字。在Doctrine文档中,仅给出了以天和月为间隔的替代方案。但我需要几个小时。我该怎么做? 最佳答案 使用phpDateTime对象-doctrine会为你处理这个$date=new\DateTime();$date->m

php - doctrine2 中的自定义 DQL 函数

如何在部分中使用自定义DQL函数来合成查询结果。寻找一种在createQuery或任何其他学说方式(nativeSql、QueryBuilder)中使用DQL函数的方法,它没有必要使用部分,但它应该根据表的关系来补充我的数组,它应该只选择选择性字段以下查询工作正常:$q=$em->createQuery("select"."partialt.{id,description},"."partialut.{id,firstName,lastName,email},"."DATE_FORMAT(ut.created,'%m-%d-Y')"."fromPMIUserBundle:TasktLE

php - Doctrine ORM 2 选择负数

我在目前正在进行的Silex项目中使用DoctrineOrm。我的问题是我的账户交易实体有时在“金额”字段中有负double。这很好,实体保存。问题是当使用findOneBy时,选择查询将浮点值转换为字符串,因此找不到它。我的实体:accTransId;}/***Setamount**@paramfloat$amount**@returnAccTrans*/publicfunctionsetAmount($amount){$this->amount=$amount;return$this;}/***Getamount**@returnfloat*/publicfunctiongetAm