1

我在控制器操作中有以下代码:

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 Catchable 致命错误:传递给 Acme\ContactlistBundle\Entity\Contact::setPromotion() 的参数 1 必须是 Acme\ContactlistBundle\Entity\Promotion 的实例,给定 null,...

我检查了上述语句生成的 SQL,并检查以确保记录被持久保存到促销表(如果不存在)。促销对象已正确创建并保存到数据库中,所以我不明白在将其分配给联系人变量时,它的值为 null。

出了什么问题?

4

0 回答 0