Php 使用条令保存多个记录并获取每个记录的id
我的php应用程序中有一个将数据保存在表中的函数:Php 使用条令保存多个记录并获取每个记录的id,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我的php应用程序中有一个将数据保存在表中的函数: public function saveAdditionalDataForRecord($header, $data, $record) { $em = $this->getEntityManager(); foreach ($header as $key => $value) { $clientRecordAdditionalData = new ClientRec
public function saveAdditionalDataForRecord($header, $data, $record)
{
$em = $this->getEntityManager();
foreach ($header as $key => $value) {
$clientRecordAdditionalData = new ClientRecordAdditionalData();
$clientRecordAdditionalData->setName($value);
$clientRecordAdditionalData->setValue($data[$key]);
$clientRecordAdditionalData->setRecord($record);
$em->persist($clientRecordAdditionalData);
}
$em->flush();
return $clientRecordAdditionalData->getId();
}
我想返回id为saved records的数组,而不是上次保存的记录。我该怎么做?我将非常感谢你的帮助;)
最好的问候只有两种方法可以做到这一点:要么使用插入前生成的非亮片id(UUID),要么在每次插入(刷新)后检索最后一个插入id
public function saveAdditionalDataForRecord($header, $data, $record)
{
$em = $this->getEntityManager();
$ids = array();
$objects = array();
foreach ($header as $key => $value) {
$clientRecordAdditionalData = new ClientRecordAdditionalData();
$clientRecordAdditionalData->setName($value);
$clientRecordAdditionalData->setValue($data[$key]);
$clientRecordAdditionalData->setRecord($record);
$em->persist($clientRecordAdditionalData);
$objects[] = $clientRecordAdditionalData;
}
$em->flush();
foreach($objects as $object)
{
$ids[] = $object->id;
}
return $ids;
}
安装ramsey/uuid
以生成uuid
foreach ($header as $key => $value) {
$clientRecordAdditionalData = new ClientRecordAdditionalData();
$clientRecordAdditionalData->setId(Uuid::uuid4());
$clientRecordAdditionalData->setName($value);
$clientRecordAdditionalData->setValue($data[$key]);
$clientRecordAdditionalData->setRecord($record);
$em->persist($clientRecordAdditionalData);
}
嗯,但是使用$em->flush();并不是每一项记录都是最优的。有时程序可能会崩溃。@KrzysztofMichalski Flush不应该导致程序崩溃,如果它是这样调用的,您应该报告这个bug。无论如何,我已经修改了答案,以解决同花顺问题。