简体   繁体   English

使用原则保存多个记录,并获取每个记录的ID

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM