php – Doctrine – 如何在postSave()事件中获取SQL INSERT查询?

前端之家收集整理的这篇文章主要介绍了php – Doctrine – 如何在postSave()事件中获取SQL INSERT查询?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想获得Doctrine在调用对象的save()方法生成的确切sql INSERT查询.

最好,我想在模型的postSave()事件中获取它并将其记录在txt文件中.

例如:

<?PHP 
$user = new User(); // A Doctrine Model with timestampable behavior enabled
$user->first_name = 'Manny';
$user->last_name = 'Calavera';
$user->save();
?>

我想获取/记录以下SQL查询

INSERT INTO user (first_name,last_name,created_at,updated_at) VALUES ('Manny','Calavera','2010-08-03 12:00:00','2010-08-03 12:00:00');

需要这个的背景是,我希望通过解析txt文件来批量导入数据.

我认为没有任何简单的方法可以做到这一点,因为save()的行为取决于几个不同的东西(如果你正在插入/更新).

如果您已经创建了一个doctrine查询对象,那么您可以像这样调用getsqlQuery()方法

$q = Doctrine_Query::create()
->select('u.id')
->from('User u');

echo $q->getsqlQuery();

但save()是一个方法,而不是一个对象,所以这不起作用.我认为你必须破解一些代码来检测你是否正在插入或更新并构建一个查询以便即时登录然后使用save().

我知道这个建议并不理想,因为它并没有“完全”记录save()正在做什么,但出于你声明的目的,它仍然可以正常工作.

猜你在找的PHP相关文章