persistAndFlush和persist,flush之间的区别

Bil*_*lel 5 symfony doctrine-orm

我使用Doctrine创建了一个Symfony项目,当我在数据库中保存一个实体时,我发现它节省了两次.

我都用了persistAndflush(),并且persist()flush()分别,但我不明白的问题.

Alo*_*lil 16

试想一下,在你的控制器,你有一个以上的运做不同的对象:$obj1,$obj2,$obj3.

现在,您需要在数据库中保存所有转换(创建,更新,删除).要告诉ORM它需要执行这些操作,您需要通过以下方式"填充队列":

$em->persist($obj1); 
$em->persist($obj2);
$em->persist($obj3); 
Run Code Online (Sandbox Code Playgroud)

现在,在队列中,您有三个对象,但数据库中仍然没有更改.刷新操作告诉ORM/ODM"现在应用更改".

$em->flush();
Run Code Online (Sandbox Code Playgroud)

因此,应用在你的三个对象的修改将被存储在数据库中坚持调用的顺序为:$obj1,$obj2,$obj3.


Moh*_*han 7

换句话说,在每 2 个刷新之间,一个新的事务开始。您可以将其与使用普通 PDO 连接的事务、提交、回滚进行比较