Php Symfony2原则对象-为什么新创建的对象为空?
我在控制器操作中有以下代码:Php Symfony2原则对象-为什么新创建的对象为空?,php,symfony,doctrine,Php,Symfony,Doctrine,我在控制器操作中有以下代码: public function someAction() { // ... $promo_repo = $em->getRepository('AcmeContactlistBundle:Promotion'); $default_promo_code = $this->container->getParameter('promo_default_code'); $promo = $promo_repo->fi
public function someAction()
{
// ...
$promo_repo = $em->getRepository('AcmeContactlistBundle:Promotion');
$default_promo_code = $this->container->getParameter('promo_default_code');
$promo = $promo_repo->findOneByCode($default_promo_code);
if (empty($promo)) {
$promo = new Promotion();
$promo->setCode($default_promo_code);
$start_date = $this->container->getParameter('promo_default_start_date');
$expiry_date = $this->container->getParameter('promo_default_end_date');
$promo->setStartsAt(new \DateTime($start_date));
$promo->setExpiresAt(new \DateTime($expiry_date));
$em->persist($promo);
$em->flush();
}
$contact = new Contact();
$contact->setPromotion($promo); // <- Error here. See error msg below
// Some more code follows ...
}
错误消息
PHP可捕获致命错误:参数1传递给
Acme\ContactlistBundle\Entity\Contact::setPromotion必须是
Acme\ContactlistBundle\Entity\Promotion的实例,给定为空,
我已经检查了由上述语句生成的SQL,并且还检查了以确保在升级表中保留记录(如果不存在)。升级对象是正确创建并持久化到数据库的,所以我不理解在将其分配给contact变量时,它的值是否为null
发生了什么问题?您确定控制器中发生了错误吗?如果控制器中发生错误,请确保基于异常的回溯,例如,您可能尝试在联系人实体的构造函数中为提升赋予空值?不要使用空值,请使用if$宣传片{…@Cerad:那是一条红鲱鱼,因为它是空的。不,不,不,不。阅读手册。empty检查变量是否存在,而不是变量的值是否为null。但我确实喜欢鲱鱼。@Cerad,你错了,empty检查一个空变量,引用自文档:确定一个变量是否被认为是空的。如果你想检查f或者变量的存在,使用isset