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 を確認し、レコードがプロモーション テーブルに保持されていることも確認しました (存在しない場合)。プロモーション オブジェクトが作成され、データベースに正しく保持されているため、それを contact 変数に割り当てるまでに値が null になることを理解できません。

何がうまくいかないのですか?

4

0 に答える 0