Edv*_*lle 4 php collections orm doctrine data-access-layer
我想知道ff:代码将多少次进入数据库的中途.
foreach ($recipients as $recipient) {
$received_email = new ReceivedEmail();
$received_email->setRecipient($recipient);
$received_email->setEmail($email);
$entityManager->persist($received_email);
$entityManager->flush();
}
Run Code Online (Sandbox Code Playgroud)
$recipients 是与ReceivedEmail具有一对多关系的User对象数组
$email 是与ReceivedEmail具有一对多关系的对象.
例如$recipients,如果有五个实体,循环是否总共产生五次数据库访问?还是只有一个?
以上示例是插入新ReceivedEmail记录的最佳方式吗?
谢谢
Ath*_*lan 10
将为每个持久性生成一个INSERT语句.
更重要的是,您可以只显示您的SQL语句进行调试,只需配置Doctrine进行日志记录:https: //stackoverflow.com/a/4585421/1815881
在你的情况下:
$entityManager->getConfiguration()->
setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
Run Code Online (Sandbox Code Playgroud)
对于许多插入,您应该考虑批处理:
希望我已经揭露了这个问题.
| 归档时间: |
|
| 查看次数: |
15918 次 |
| 最近记录: |