- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将 mysql 查询转换为推进标准,
$subSelect = " SELECT * FROM " . NotificationqueuePeer::TABLE_NAME .
" where " . NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS . " = " . Notificationqueue :: STATUS_UNSENT .
" OR " . NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS . " = " . Notificationqueue :: STATUS_TRIED .
" LIMIT 5 FOR UPDATE ";
我尝试将上面的 SQL 转换为 propel like
$crit= new Criteria();
$crit->add(NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS, Notificationqueue :: STATUS_UNSENT);
$crit->addOr(NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS, Notificationqueue :: STATUS_TRIED);
$crit->setLimit(5);
$crit->add(' FOR UPDATE ', Criteria::CUSTOM);
$notifications = NotificationqueuePeer::doSelectRS($crit);
echo '<pre>';
print_r($notifications);
当我打印时,查询是:
SELECT column1, column2,..., FOR UPDATE WHERE AND (NOTIFICATIONQUEUE.ITNOTIFICATIONQUEUESTATUS=1
OR NOTIFICATIONQUEUE.ITNOTIFICATIONQUEUESTATUS=3) LIMIT 5
正如您所注意到的,FOR UPDATE 放在了错误的位置,它应该附加在末尾。
谢谢
最佳答案
不确定这是哪个版本的 Propel/Symfony1,但我可以回答关于 Symfony 1.0 的问题。
第一个参数 Criteria::add()
总是被假定为一个列,这就是为什么 FOR UPDATE
似乎出现在您的选择列列表中的原因。我认为没有任何方法可以使用 Criteria::add()
将 FOR UPDATE
附加到查询的末尾。 Propel 将以非常特定的顺序从每个提供的组件(连接、wheres、订单等)构建查询,该顺序总是以 LIMIT 和 OFFSET 子句结束,如果有的话。
使用纯 SQL 或使用 Criteria 构建查询的其余部分会简单得多,使用 NotificationqueuePeer::createSelectSql($crit)
获取结果 SQL(如果这确实是Symfony 1.0/Propel 1.2),然后将您的附加部分附加到结果中。无论哪种方式,您仍然需要执行它并自己填充结果集。
如果您想确切了解正在发生的事情以及为什么值得深入研究 Propel 代码(它相对简单)并了解 doSelectRS
的实际工作原理。
关于php - 无法将 FOR UPDATE 附加到标准推进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013443/
我正在自定义 phpUnderControl 构建文件以使用 symfony propel:build-sql 功能生成要为每个构建(不是每个测试)加载的 .sql 文件。我遇到的情况是,生成的 .s
我有 table : Article: ID | TITLE | CONTENT 1 | aaa+s | sdsd 2 | ccc+a | sdsda 3 | aaa+s | dsdsd 4
我创建了一个本地应用程序,它使用 ajax 从 SQL 数据库调用结果。 系统运行良好,但是如果使用 ' 进行某些搜索,则系统失败并且我收到以下错误“注意:数组到字符串的转换 in..” 这是我的 J
我在我的 PHP 应用程序中使用 propel ORM。 通过阅读文档,我不知道如何发出这种类型的请求: SELECT x FROM table where col1 = 'xxx' and not(
我正在尝试使用 Propel 1.6 使用自定义“order by”进行查询 select * from myObject ORDER BY FIELD(id, 3, 11, 7, 1) 这不起作用:
我有一个 MySQL 表,其中包含从用户到用户的所有消息: id | to_id /*user_id*/ | from_id /*user_id*/ 1 | 32 |
我正在使用 symfony 开始一个新项目很容易与 Doctrine 集成和 Propel ,但我当然需要做出选择.... 非常感谢。 编辑:感谢所有回复,有用的东西。这个问题没有真正正确的答案,所以
我有一个产品对象和评级对象,它们代表对产品的评级。评级有一个名为“value”的属性,它是一个从 1 到 5 的整数。 对于给定的产品,我想获得所有评级值的平均值。我知道如何获得所有评级: $prod
我正在通过 MySQL Server 5.5.28 使用与 Propel 1.6.7 集成的 Symfony 2.1.6 框架作为数据库 ORM,我在将数据库排序规则设置为 utf8_unicode_
我正在尝试使用 Propel 2 对数据库进行逆向工程。但是每次我尝试运行 model:build 命令时,我都会收到以下错误: [Propel\Generator\Exception\Invalid
我正在尝试获取 propel 中列的总和。我的代码 $c = new Criteria(); $c->add(valuePeer::OWNER_ID, $this->getId()); $c->add
我们有一个包含所有产品的表格和一个包含所有订购商品的单独表格。订购的商品基本上是已订购产品的副本,与其源产品相关(通过外键)和仅与订购商品相关的附加数据,如订购数量。 通过这种方式,我们确保了订单数据
有没有人建议使用外部 ORM,如 Doctrine/Propel 而不是 Zend Framework 中的默认 Zend_Db_Table? 我认为您的回答和理由对整个 ZF 社区都很有值(valu
我正在尝试按年份对现有表进行分区。(没有现有分区) alter table test_table PARTITION BY EXTRACT (year FROM date_c); 但是好像有一些错误
我有大型 MySQL 数据库。我想一次获取 100 行,直到处理完所有数据库。 protected function doEcho($msg){ static $time, $start;
我正在使用 Symfony 1.4.8 和 Mysql 5.5 运行时出现此错误 symfony 推进:构建全部 You have an error in your SQL syntax; check
我想将自定义 sql 子查询插入到常见的 Propel 标准中。子查询包含用户输入,因此必须对这些输入进行转义。我怎样才能实现这一点? 我有这样的东西(简化): $c = new Criteria()
我是一名优秀的程序员,十分优秀!