代码之家  ›  专栏  ›  技术社区  ›  The50

使用策略设置条目ID无

  •  0
  • The50  · 技术社区  · 6 年前

    我在跟踪这个问题 Explicitly set Id with Doctrine when using "AUTO" strategy

    但我的申请似乎不能成功。

    我的实体供应商或经销商交付:

    class SuppliersOrdersDeliveries
    {
    /**
     * @var integer
     *
     * @ORM\Column(name="supplier_order_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $supplierOrderId;
    {...}
    }
    

    主要的关键是

    供应商订单编号

    YAML文件:

        id:
        supplierOrderId:
            type: integer
            nullable: false
            unsigned: true
            comment: 'Supplier order ID'
            id: true
            column: supplier_order_id
            generator:
                strategy: NONE
    

    这就是我将数据持久化到数据库的方法:

    $dateTimeDeliveryTerm = new DateTime($generalDeliveryTerm);
    $delivery = new \Doctrine\Entities\SuppliersOrdersDeliveries();
    $delivery->setGeneralDeliveryTerm($dateTimeDeliveryTerm);
    $delivery->setSupplierOrderId($supplier_order['supplier_order_id']);
    $delivery->setCmsUserId($this->cmsusers->get('id'));
    
    $this->eMgr->getClassMetaData(get_class($delivery))->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator());
    $this->eMgr->getClassMetaData(get_class($delivery))->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE);
    
    $this->eMgr->persist($delivery);
    $this->eMgr->flush();
    

    问题是,在supplier_order_id变量中插入时仍然得到空值。

    另外,我尝试在yaml和实体文件上将策略设置为“无”,但错误仍然与稍后使用setidGeneratorType函数更改类型时相同。

    我不希望供应商订单ID自动递增或其他任何内容,我需要自己设置。

    有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   The50    6 年前

    通过将SupplierOrder对象设置到交货实体中,而不仅仅是简单的ID值,解决了这一问题。正如@cerad在上述评论中所说。

    $delivery->setSupplierOrder($supplierOrder);