【问题标题】:Doctrine 1.2 Control Flow Function "IF"学说 1.2 控制流函数“IF”
【发布时间】:2012-03-14 11:30:42
【问题描述】:

使用 Doctrine 1.2.4, 我无法在 Doctrine 下使用“IF”MySQL 指令解决。

我想生成这个 SQL 代码:

UPDATE mytable SET mytable.state = IF(mytable.state=0, 128, mytable.state)

但是使用:

$stmt_update = Doctrine_Query::create()
->update('Mytable mytable')
->set('mytable.state', 'IF(mytable.state=0, 128, mytable.state)')
->execute();

mysql服务器下的结果是: mytable.state = IF(mytable.state)

$stmt_update>getDql(); // 'UPDATE Mytable mytable SET mytable.state = IF(mytable.state=0, 128, mytable.state )'
$stmt_update->getSqlQuery(); // 'UPDATE mytable SET  mytable.state = IF(mytable.state)'

getSqlQuery()方法用于调用Mysql,但语句SQL不正确。

是一种在 Doctrine 1.x 中使用 IF 的方法吗?

http://groups.google.com/group/doctrine-user/browse_thread/thread/3faa518645e32eda%23&usg=AFQjCNEuqznC25z1EAzF4NIcfln8VG_Brg 目前 DQL 不支持此功能。

是否有适用于 IF with Doctrine 1 的扩展? (如 DoctrineExtensions / lib / DoctrineExtensions / Query / Mysql / IfElse.php ) https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/IfElse.php

Conditional IF statement in a PHP Doctrine 1.2 SET statement 不可用。

【问题讨论】:

    标签: php mysql doctrine doctrine-1.2


    【解决方案1】:

    只需在IF( 之间放置空格,我的版本是 1.2.3:

    $stmt_update = Doctrine_Query::create()
        ->update('Mytable mytable')
        ->set('mytable.state', 'IF (mytable.state=0, 128, mytable.state)');
    
    echo $stmt_update->getSqlQuery();
    

    我明白了:

    UPDATE Mytable SET mytable.state = IF (mytable.state=0, 128, mytable.state)

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2012-09-04
      • 2015-09-29
      相关资源
      最近更新 更多