php添加数据到表中失败,php – 无法使用doctrine将数据刷新到子表中

以下是我的代码片段,我想要做的是将父表的ID插入子表,同时将数据插入子表.以下是我的代码片段

public function addAction()

{

$ViewModel = new ViewModel();

$form = new TestForm();

$form->get('submit')->setValue('Add');

$request = $this->getRequest();

if ($request->isPost())

{

$TestFilter = new TestFilter();

$test = $this->getServiceLocator()->get('Test');

$form->setInputFilter($TestFilter->getInputFilter());

$form->setData($request->getPost());

if ($form->isValid())

{

$test->populate($form->getData());

$this->getEntityManager()->persist($test);

$this->getEntityManager()->flush();

$TestDetail = $this->getServiceLocator()->get('TestDetail');

$TestDetail->populate($form->getData());

$TestDetail->setTest($test);

$this->getEntityManager()->persist($TestDetail);

$this->getEntityManager()->flush();

return $this->redirect()->toRoute('test');

}

}

return array('form' => $form);

}

我的实体如下

namespace Test\Entity;

use Doctrine\ORM\Mapping as ORM;

use Zend\Form\Annotation;

use Test\Entity\Test;

/**

* An Test entity.

*

* @ORM\Entity

* @ORM\Table(name="testdetail")

*

* @property int $id

* @property string $fname

* @property string $lname

* @property string $description

* @property datetime $creation_date

* @property datetime $modification_date

*

* @Annotation\Name("Test_Detail")

*

*/

class TestDetail

{

/**

* @ORM\Id

* @ORM\Column(type="integer");

* @ORM\GeneratedValue(strategy="AUTO")

*/

protected $id;

/**

* @ORM\Column(type="string")

*

* @Annotation\Required(true)

*/

protected $first_name;

/**

* @ORM\Column(type="string")

*

* @Annotation\Required(true)

*/

protected $last_name;

/**

* @ORM\Column(type="string")

*

* @Annotation\Required(true)

*/

protected $description;

/**

* @ORM\ManyToOne(targetEntity="TestDetail", inversedBy="test_details")

*

* @Annotation\Required(true)

*/

protected $test;

public function populate($data)

{

$this->id = isset($data['id']) ? $data['id'] : $this->id;

$this->first_name = isset($data['first_name']) ? $data['first_name'] : $this->first_name;

$this->last_name = isset($data['last_name']) ? $data['last_name'] : $this->last_name;

$this->description = isset($data['description']) ? $data['description'] : $this->description;

}

/*

* Constructor

*/

public function __construct()

{

$now = new \DateTime("now");

$this->modification_date = $now;

}

/**

* Magic getter to retrieve protected properties.

*

* @param string $property

*/

public function __get($property)

{

return $this->$property;

}

/**

* Magic setter to save protected properties.

*

* @param string $property

* @param mixed $value

*/

public function __set($property, $value)

{

$this->$property = $value;

}

public function setTest(Test $test)

{

$this->test = $test;

}

}

?>

namespace Test\Entity;

use Doctrine\ORM\Mapping as ORM;

use Zend\Form\Annotation;

/**

* An Test entity.

*

* @ORM\Entity

* @ORM\Table(name="test")

*

* @property int $id

* @property string $name

* @property string $address

* @property smallint $status

* @property datetime $creation_date

* @property datetime $modification_date

*

* @Annotation\Name("Test")

*

*/

class Test

{

/**

* @ORM\Id

* @ORM\Column(type="integer");

* @ORM\GeneratedValue(strategy="AUTO")

*/

protected $id;

/**

* @ORM\Column(type="string")

*

* @Annotation\Required(true)

*/

protected $name;

/**

* @ORM\Column(type="string")

*

* @Annotation\Required(true)

*/

protected $status;

/**

* @ORM\Column(type="datetime")

*

* @Annotation\Required(false)

*/

protected $creation_date;

/**

* @ORM\Column(type="datetime")

*

* @Annotation\Required(false)

*/

protected $modification_date;

/**

* @ORM\OneToMany(targetEntity="TestDetail", mappedBy="test", orphanRemoval=true)

*

* @Annotation\Required(false)

*/

protected $test_details;

public function populate($data) {

$this->id = isset($data['id']) ? $data['id'] : $this->id;

$this->name = isset($data['name']) ? $data['name'] : $this->name;

$this->status = isset($data['status']) ? $data['status'] : $this->status;

}

/*

* Constructor

*/

public function __construct()

{

$now = new \DateTime("now");

$this->creation_date = $now;

$this->modification_date = $now;

}

/**

* Magic getter to retrieve protected properties.

*

* @param string $property

*/

public function __get($property)

{

return $this->$property;

}

/**

* Magic setter to save protected properties.

*

* @param string $property

* @param mixed $value

*/

public function __set($property, $value)

{

$this->$property = $value;

}

}

Flush之后我收到这个错误

Found entity of type Test\Entity\Test on association Test\Entity\TestDetail#test, but expecting Test\Entity\TestDetail

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值