У меня есть функция в моем приложении 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();
}
Я хотел бы вернуть массив с сохраненными идентификаторами, а не последней сохраненной записью. Как я могу это сделать? Я был бы благодарен за помощь;) С наилучшими пожеланиями
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;
}
Есть только два способа сделать это: либо использовать нестрочные идентификаторы (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);
}