2012-03-14 9 views
2

Doctrine 1.2.4を使用すると、 Doctrineの "IF" MySQL命令を使用して解決できません。Doctrine 1.2コントロールフロー関数 "IF"

私は、このSQLコードを生成します:

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

しかし、使用して:MySQLサーバの下

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

結果は次のとおりです。 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ではサポートされていません。

Doctrine 1とのIFの拡張機能はありますか? https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/IfElse.php

Conditional IF statement in a PHP Doctrine 1.2 SET statement(DoctrineExtensions/LIB/ DoctrineExtensions /クエリ/ MySQLの/ IfElse.phpように)使用できません。

答えて

2
私のバージョンは1.2.3です IF(

だけ置くスペース:

$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)

関連する問題