0

我找到了一个解决方案,可以在使用 MySQL 中的单个查询进行更新之前选择行的 id:

UPDATE data_table
   SET is_active = 0
WHERE token = 'some_token'
   AND is_active = 1
   AND @id := id;
SELECT @id;

但我想找到一种方法来使用 Doctrine 做同样的事情。我试过了 :

$pdo = Doctrine_Manager::getInstance()->getCurrentConnection();
$res = $pdo->execute("
    UPDATE data_table
       SET is_active = 0
    WHERE token = 'some_token'
       AND is_active = 1
       AND @id := id;
    SELECT @id;
")->fetchAll();

但我只得到一个PDOException: SQLSTATE[HY000]: General error,我没有找到任何解决方法......

有任何想法吗 ?


根据此处的解决方案,我找到了答案:

Doctrine_Manager::getInstance()->getCurrentConnection()->standaloneQuery("
    UPDATE data_table
       SET is_active = 0
    WHERE token = 'some_token'
       AND is_active = 1
       AND @id := id;
");

$data = DataTable::getInstance()->createQuery('d')->where('id = @id')->fetchOne();
4

0 回答 0