加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:36:53 所属栏目:PHP教程 来源:网络整理
导读:我想获得Doctrine在调用对象的save()方法时生成的确切SQL INSERT查询. 最好,我想在模型的postSave()事件中获取它并将其记录在txt文件中. 例如: ?php $user = new User(); // A Doctrine Model with timestampable behavior enabled$user-first_name = 'Mann
我想获得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()正在做什么,但出于你声明的目的,它仍然可以正常工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读