我更新了我的实体文件以包含关系映射。
坚持在更新之前工作,现在它没有。
也许这是我忘记做的事情。
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字段,或者我的实体文件编码错误。
答案 0 :(得分: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