我无法持久存在一个已经与对象一起存在的null。
它会抛出以下错误。
Catchable Fatal Error: Argument 1 passed to MyProject\EntityBundle\Entity\Requirements::setReplacedEmployee() must be an instance of MyProject\EntityBundle\Entity\Employee, null given, called in /var/www/MyProject/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 347 and defined in /var/www/MyProject/src/MyProject/EntityBundle/Entity/Requirements.php line 384
最初我保存replacementEmployee对象,该对象可以是null / object。但是稍后如果我在编辑它时用null替换该对象会抛出上述错误。
以下是我的控制器代码。
try {
if ($request->request->get('save') === 'Save') {
$form->bindRequest($request); // this is the line which throws the above error
if ($form->isValid()) {
$requirementObj->setUpdatedAt(new \DateTime('now'));
$em->flush();
$request->request->set('requirementId', $requirementId);
return $this->displayAction($request);
}
}
}
这是Requirements.php中的内容,它是一个实体文件。
/**
* @var replacedEmployee
*
* @ORM\ManyToOne(cascade={"persist"},targetEntity="Employee")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="replaced_employee_id",referencedColumnName="id",onDelete="CASCADE")
* })
*/
private $replacedEmployee;
/**
* Set replacedEmployee
*
* @param MyProject\EntityBundle\Entity\Employee $replacedEmployee
*/
public function setReplacedEmployee(\MyProject\EntityBundle\Entity\Employee $replacedEmployee)
{
$this->replacedEmployee = $replacedEmployee;
}
/**
* Get replacedEmployee
*
* @return MyProject\EntityBundle\Entity\Employee
*/
public function getReplacedEmployee()
{
return $this->replacedEmployee;
}
任何人都可以建议解决这个问题。
提前致谢。
答案 0 :(得分:3)
我无法完全理解您的问题但是,如果您想允许与null
建立关系的Employee
值,则应首先编辑映射(这可能不是必需的JoinColumn
默认情况下应允许null
值:
/**
* @var replacedEmployee
*
* @ORM\ManyToOne(cascade={"persist"},targetEntity="Employee")
* @ORM\JoinColumns({
* @ORM\JoinColumn(
* name="replaced_employee_id",referencedColumnName="id",onDelete="CASCADE",
* nullable=true
* )
* })
*/
private $replacedEmployee;
生成setter / getters后,Doctrine2(如果我没记错的话,从2.2.1开始)应生成:
/**
* Set replacedEmployee
*
* @param MyProject\EntityBundle\Entity\Employee $replacedEmployee
*/
public function setReplacedEmployee(Employee $replacedEmployee = null)
{
$this->replacedEmployee = $replacedEmployee;
}
请注意,参数是可选的(具有null
默认值)。希望这会有所帮助。