我正在尝试在 symfony2 中运行控制台命令,其中某个类的某些属性正在更新。其中一个属性有一个相应的reviewBy-property,它是由可责备行为设置的,如下所示:
/**
* @var bool
* @ORM\Column(name="public_cmt", type="boolean", nullable=true)
*/
private $publicCmt;
/**
* @var User $publicCmtReviewedBy
*
* @Gedmo\Blameable(on="change", field="public_cmt")
* @ORM\ManyToOne(targetEntity="My\Bundle\EntityBundle\Entity\User")
* @ORM\JoinColumn(name="public_cmt_reviewed_by", referencedColumnName="id", nullable=true)
*/
private $publicCmtReviewedBy;
当我运行任务时,没有可以“责备”的用户,所以我得到以下异常:
[Doctrine\ORM\ORMInvalidArgumentException]
EntityManager#persist() expects parameter 1 to be an entity object, NULL given.
但是我也不能禁用可责备,因为在我开始任务并以编程方式尝试通过以下方式设置用户时,它还没有注册为过滤器:
// create the authentication token
$token = new UsernamePasswordToken(
$user,
null,
'main',
$user->getRoles());
// give it to the security context
$this->getService('security.context')->setToken($token);
不起作用。有人有想法吗?