我在这里回答这个问题当使用";AUTO";策略
但我似乎无法在我的应用程序上使用它。
我的实体供应商订单交付:
class SuppliersOrdersDeliveries
{
/**
* @var integer
*
* @ORMColumn(name="supplier_order_id", type="integer")
* @ORMId
* @ORMGeneratedValue(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
这就是我如何将数据持久化到DB:中
$dateTimeDeliveryTerm = new DateTime($generalDeliveryTerm);
$delivery = new DoctrineEntitiesSuppliersOrdersDeliveries();
$delivery->setGeneralDeliveryTerm($dateTimeDeliveryTerm);
$delivery->setSupplierOrderId($supplier_order['supplier_order_id']);
$delivery->setCmsUserId($this->cmsusers->get('id'));
$this->eMgr->getClassMetaData(get_class($delivery))->setIdGenerator(new DoctrineORMIdAssignedGenerator());
$this->eMgr->getClassMetaData(get_class($delivery))->setIdGeneratorType(DoctrineORMMappingClassMetadata::GENERATOR_TYPE_NONE);
$this->eMgr->persist($delivery);
$this->eMgr->flush();
问题是,在supplier_order_id变量处插入时,我仍然得到null。
此外,我试图在YAML和实体文件上将策略设置为NONE,但错误仍然存在,因为我稍后会使用setIdGeneratorType函数更改类型。
我不希望supplier_order_id自动递增或其他任何事情,我需要自己设置它。
有什么想法吗?
通过在交付实体中设置一个SupplierOrder对象而不是只放入简单的ID值来解决此问题。正如@Cerad在上面的评论中所说。
$delivery->setSupplierOrder($supplierOrder);