[英]Save multiple records with doctrine and getting id every record
I Have a function in my php application to save data in table: 我在我的PHP应用程序中有一个功能可以将数据保存在表中:
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();
}
I'd like to return array with id saved records instead last saved record. 我想返回ID保存的记录而不是最后保存的记录的数组。 How Can I do that?
我怎样才能做到这一点? I would be greateful for help ;) Best regards
我将不胜感激;)最好的问候
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;
}
There are only two ways to do this: either use non-sequintial IDs (UUIDs) that you generate before inserting or retrieve last insert id after each insert(flush). 只有两种方法可以执行此操作:要么使用在插入之前生成的非半透明ID(UUID),要么在每个insert(flush)之后检索最后的插入ID。
Install ramsey/uuid
to generate uuid. 安装
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.