使用策略NONE的学说集条目ID

时间:2018-11-28 15:46:39

标签: php doctrine-orm doctrine

我在这里Explicitly set Id with Doctrine when using "AUTO" strategy

关注此问题

但是我似乎无法使其在我的应用程序中正常工作。

我的实体SuppliersOrdersDeliveries:

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

主键是

  

supplier_order_id

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和实体文件上将策略设置为NONE,但是错误仍然与稍后使用setIdGeneratorType函数更改类型一样。

我不希望Supplier_order_id自动增加或其他任何东西,我需要自己设置。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

通过将SupplierOrder对象设置为交货实体来解决此问题,而不仅仅是放置普通ID值。就像@Cerad在上面的评论中所说的^^。

$delivery->setSupplierOrder($supplierOrder);