2012-03-14 2 views
2

Doctrine 1.2.4를 사용하면 Doctrine에서 "IF"MySQL 명령어를 사용하여 해결할 수 없습니다.Doctrine 1.2 제어 흐름 함수 "IF"

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

그러나 사용 :

나는이 SQL 코드를 생성 할

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

MySQL 서버에서 결과는 다음과 같습니다 mytable.state = (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)' 
IF

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 확장 기능을 사용할 수 있습니까? (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
내 버전은 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)