Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2原则对象-为什么新创建的对象为空?_Php_Symfony_Doctrine - Fatal编程技术网

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