我在这里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自动增加或其他任何东西,我需要自己设置。
有什么想法吗?
答案 0 :(得分:0)
通过将SupplierOrder对象设置为交货实体来解决此问题,而不仅仅是放置普通ID值。就像@Cerad在上面的评论中所说的^^。
$delivery->setSupplierOrder($supplierOrder);