草庐IT

Doctrine_Query

全部标签

php - (Doctrine ORM) 如何通过多对一关系对 SELECT 进行排序

我有一个包含类型和类别(以及其他不相关的东西)的数据库。类型与类别具有多对一的关系。我想要的是选择所有类型的行,首先按类别名称排序,然后按类型重量排序,最后按类型名称排序(全部升序)。关键部分是我希望在结果中将具有相同类别的所有类型组合在一起。作为我的SQL新手,我认为一个简单的连接语句后跟适当的orderby语句就足够了。我错了。我得到的结果对我来说毫无意义。实际结果(类型名称-类别名称):飞机起落架-飞机飞机转子叶片-飞机飞机机翼-飞机自行车架-骑自行车船弓-船只船货甲板-船只巨石底部-岩石巨石顶-岩石弓形元素-其他砖1x1带果汁盒打印-打印的砖砖block1x1带牛奶盒打印-砖b

mysql - 什么更好 : joins or multiple sub-select statements as part of one query

性能方面,什么更好?如果我的查询中有3或4个join语句或使用嵌入式select语句作为一个查询的一部分从我的数据库中提取相同的信息? 最佳答案 我会说联接更好,因为:它们更易于阅读。您可以更好地控制是要执行内部、左/右外部联接还是完全外部联接不能轻易滥用连接语句来创建可憎的查询使用联接,查询优化器可以更容易创建快速查询(如果内部选择很简单,结果可能相同,但对于更复杂的东西,联接会起作用更好)。嵌入的select只能模拟left/rightouterjoin。有时您无法使用联接来做某事,在这种情况下(并且只有在那时)您将不得不求助于

php - Doctrine 和 Symfony 中的 MySQL 用户定义变量

我有以下Doctrine声明,效果很好。$query=$this->createQuery('r')->select('u.id,CONCAT(u.first_name,"",LEFT(u.last_name,1))asfull_name,u.first_name,u.last_name,u.gender,r.run_time')->innerJoin('r.ChallengeUseru')->orderBy('run_time')->execute(array(),Doctrine::HYDRATE_ARRAY_SHALLOW);我需要在其中添加行数。现在我知道使用原始SQL可以做到

MySQL查询utf-8字符(如中文)(还有,我用的是Doctrine)

$q=$this->createQuery('q')->where('q.group_id=?',$group_id)->andWhere('q.content=?',$content)->execute();如果我的$content包含任何unicode字符(例如中文/日文),这会导致以下消息:SQLSTATE[HY000]:Generalerror:1267Illegalmixofcollations(latin1_swedish_ci,IMPLICIT)and(utf8_general_ci,COERCIBLE)foroperation'='有没有人遇到过类似的问题?

php - 大型数据集 : mysql_unbuffered_query with innodb?

基本上我需要对大型数据集进行操作,所以我开始考虑我可以使用mysql_unbuffered_query来不将所有结果加载到RAM中。但我读到,当我获取行时,我无法在同一个表上运行任何其他查询。我想知道如果表是innodb是否仍然如此?Innodb在执行mysql_unbuffered_query时是否使用行级锁定?伪代码是:$q=mysql_unbuffered_query("SELECT*FROMlargeTable");while($r=fetch($q)){if(somecondition)mysql_query("UPDATElargeTableSETfield=someval

mysql - 坚持 Doctrine2 时如何跳过专栏?

我有一列用于对象创建的时间,一列用于对象更新的时间。当我创建并保留新对象时,我从MySQL收到错误:updatedcannotbenull.我没有为它设置任何值,因为我希望updated列保持不变,并最终获得默认数据库值,无论它是什么。如何告诉doctrine只保留那些我明确设置/更改了值的列? 最佳答案 确保您的列定义将nullable定义为true。/***@Column(type="datetime",nullable=true)*/protected$updated; 关于mys

PHP/MySQL : Model repeating events in a database but query for date ranges

我正在开发一个(我打算成为的)简单的PHP/MySQL应用程序。作为其中的一部分,我希望能够对重复事件进行建模,但是我需要能够查询两个日期之间发生的所有事件(包括重复事件)。事件只有日期,一天中的时间无关紧要。我一直在研究这个问题并研究了各种方法,包括CalendarRecurring/RepeatingEvents-BestStorageMethod和Repeatingcalendareventsandsomefinalmaths.但是,我在网上找到的支持此功能的任何数据库模式示例似乎只支持查询某一天发生的事件。不支持在一定日期范围内发生的事件。作为一个抽象的例子事件表(具有某种重复

MYSQL Query比较两个查询的结果?

我目前正在为一个网站开发一个搜索功能,该功能可以在数据库中搜索特定动物。假设用户输入rabbit,搜索将通过db并显示rabbit的结果。现在假设用户输入bunny搜索将通过db但不会找到bunny的匹配项。大多数人都知道bunny的意思是rabbit,但数据库并不知道。此时我已经在同一个数据库中实现了一个MySQL同义词库来搜索用户输入的同义词。这意味着如果用户输入bunny,它将显示bunny的同义词列表。在该列表中有单词Rabbit,我试图从那里提取该单词以生成匹配项。此时我有以下内容。"SELECT`engname`FROM`searchtestdb`WHERE`engname

mysql - 代码点火器 : how to avoid db query returns last statement as key value

我在codeigniter中查询结果之前执行了几个查询:$sql_drop_temptable="...blabla...";$sql_prepare="itcreatesatemporarytable;whereIsumuplater...";$sql_summe="selectsec_to_time(sum(time_to_sec(summands)))fromworkday;";$query=$this->db->query($sql_drop_temptable);$query=$this->db->query($sql_prepare);$query=$this->db->q

php - Doctrine createQueryBuilder 多条件 where 语句有点笨拙

我有一个itemid和一个类别id,它们都是有条件的。如果没有给出,则所有项目都显示为最新的拳头。如果给出了itemid,则仅显示id低于给定id的项目(用于分页)。如果给出类别ID,则仅显示特定类别中的项目,如果同时给出两者,则仅显示特定类别的项目,其中显示项目ID小于itemid的项目(下一页的项目)。因为参数是有条件的,所以在构建SQL字符串时,您会得到很多取决于参数的if语句(伪代码,我正在用php的东西耗尽我的美元符号):ifitemid'wherei.iid如果给出更多可选参数,这将变得非常困惑,所以我想我应该试试createQueryBuilder。希望是这样的:if($