2012-03-14 84 views
2

使用原則1.2.4, 我無法解決在教條下使用「IF」MySQL指令。Doctrine 1.2控制流函數「IF」

我想這生成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。

是如何使用IF與Doctrine 1.x?

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

IF與Doctrine 1的擴展是否可用? (像DoctrineExtensions/LIB/ DoctrineExtensions /查詢/ 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是不可用的。

回答

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)