我找到了一个解决方案,可以在使用 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();