首页 文章

更新关系映射后,Symfony 2 doctrine persist不起作用

提问于
浏览
2

我更新了我的实体文件以包含关系映射 .

坚持在更新之前工作现在它没有 .

也许这是我忘记做的事情 .

namespace classes\classBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
/**
 * advisersplans
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class advisersPlans
{
    /** 
     * 
     * @ORM\ManyToOne(targetEntity="plans", inversedBy="adviserPlans")
     * @ORM\JoinColumn(name="planid", referencedColumnName="id")
     */
    public $plan;
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    public $id;
    /**
     * @var integer
     *
     * @ORM\Column(name="userid", type="integer")
     *
     *
     */
    public $userid;
    /**
     * @var integer
     *
     * @ORM\Column(name="adviserid", type="integer")
     *
     *
     */
    public $adviserid;
    /**
     * @var integer
     *
     * @ORM\Column(name="planid", type="integer")
     *
     *
     */
    public $planid;
    /**
     * @var string
     *
     * @ORM\Column(name="participantLoginWebsiteAddress", type="string", length=255)
     */
    public $participantLoginWebsiteAddress;

    public function __construct()
    {
        $class_vars = get_class_vars(get_class($this));
        foreach ($class_vars as $key => $value)
        {
            if ($key != "plan")
            $this->$key = "";

        }
    }
}

Perist返回错误,说planid为null . 如果我删除以下它是有效的 .

/** 
 * 
 * @ORM\ManyToOne(targetEntity="plans", inversedBy="adviserPlans")
 * @ORM\JoinColumn(name="planid", referencedColumnName="id")
 */

这是我的代码,同时坚持 .

$adviserPlan = new advisersPlans();
    $adviserPlan->planid = $planid;
    $adviserPlan->userid = $this->userid();
    $adviserPlan->adviserid = $session->get("editadviserid");
    $em->persist($adviserPlan);

我应该填充计划字段而不是planid字段,或者我的实体文件编码错误 .

1 回答

  • 2

    你不应该设置ID . 你应该设置实体:

    $adviserPlan = new advisersPlans();
    // You should retrieve the plan before doing this, of course.
    $adviserPlan->setPlan($plan);
    $plans->addAdviserPlan(§adviserPlan);
    $em->persist($adviserPlan);
    

    在运行时,应该通过doctrine生成向集合添加实体的方法:

    php app/console doctrine:generate:entities YourBundle
    

相关问题