使用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的方法吗?
对于使用Doctrine 1的IF,是否可以使用扩展名? (比如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无法使用。
答案 0 :(得分:2)
只需在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)