使用doctrine2保存时,数据库中未填充某些列

时间:2018-10-25 20:40:57

标签: php doctrine-orm

我有一个学说实体,并添加了两个新属性(msoId和contract)。现在,当执行用于保存实体的代码时,将使用NULL值保存2个新列,而不是我在set()上传递的列。已经存在的列工作正常。我必须指出,它在我的本地计算机上可以正常工作,但是在TEST和STAGE环境中却不能。我已经用“ doctrine orm:generate-proxies”重新生成了代理,但是问题仍然存在。它看起来像某种缓存,但我不知道。请帮忙。

实体:

class SubscriptionSettlement扩展了实体{

const COMPLETE = 1;
const INCOMPLETE = 0;

/**
 * @var int
 * @ORM\Column(type="integer", length=11, nullable=false, options={"unsigned"=true})
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @var int
 * @ORM\Column(name="entitlement_id", type="integer", nullable=false, length=11, options={"unsigned"=true})
 */
private $entitlementId;

/**
 * @var int
 * @ORM\Column(name="due_date", type="integer", nullable=false, length=11, options={"unsigned"=true})
 */
private $dueDate;

/**
 * @var int
 * @ORM\Column(name="package_id", type="integer", nullable=false, length=11, options={"unsigned"=true})
 */
private $packageId;

/**
 * @var int
 * @ORM\Column(name="complete", type="boolean", nullable=false, length=1, options={"unsigned"=true, "default"=0})
 */
private $complete;

/**
 * @var int
 *
 * @ORM\Column(name="mso_id", type="integer", nullable=false, length=11, options={"unsigned"=true})
 */
private $msoId;

/**
 * @var string
 *
 * @ORM\Column(type="string", length=100, nullable=true)
 */
private $contract;

/**
 * @return int
 */
public function getEntitlementId(): int
{
    return $this->entitlementId;
}

/**
 * @param int $entitlementId
 */
public function setEntitlementId(int $entitlementId)
{
    $this->entitlementId = $entitlementId;
}

/**
 * @return int
 */
public function getDueDate(): int
{
    return $this->dueDate;
}

/**
 * @param int $dueDate
 */
public function setDueDate(int $dueDate)
{
    $this->dueDate = $dueDate;
}

/**
 * @return int
 */
public function getPackageId(): int
{
    return $this->packageId;
}

/**
 * @param int $packageId
 */
public function setPackageId(int $packageId)
{
    $this->packageId = $packageId;
}

/**
 * @return int
 */
public function getComplete(): int
{
    return $this->complete;
}

/**
 * @param int $complete
 */
public function setComplete(int $complete)
{
    $this->complete = $complete;
}

/**
 * @return int
 */
public function getMsoId(): int
{
    return $this->msoId;
}

/**
 * @param int $msoId
 */
public function setMsoId(int $msoId)
{
    $this->msoId = $msoId;
}

/**
 * @return string
 */
public function getContract(): string
{
    return $this->contract;
}

/**
 * @param string $contract
 */
public function setContract(string $contract)
{
    $this->contract = $contract;
}

}

保存到数据库中的代码:

$subscriptionSettlementEntity = new   SubscriptionSettlement();
        $subscriptionSettlementEntity->setEntitlementId($entitlementId);
        $subscriptionSettlementEntity->setDueDate($dueDate);
        $subscriptionSettlementEntity->setPackageId($packageId);
        $subscriptionSettlementEntity->setComplete($complete);
        $subscriptionSettlementEntity->setMsoId($msoId);
        $subscriptionSettlementEntity->setContract($contract);

        try {
            $this->getEntityManager()->persist($subscriptionSettlementEntity);
            $this->getEntityManager()->flush();
        } catch (UniqueConstraintViolationException $ucve) {
            throw new DatabaseException(
                "This subscription has already been renewed",
                DatabaseException::UNIQUE_INDEX_VIOLATION_CODE
            );
        }

        return $subscriptionSettlementEntity->getId();
    }

0 个答案:

没有答案