Symfony - 将数据存储在另一个实体上

时间:2017-04-19 15:20:56

标签: php symfony

基本上我创建了一个使用多个实体的表单,并且从这个表单中检索到的结果我希望另一个表中的库存分成BDD。有人告诉我在存储库中进行插入(或更新)请求,并在检查提交的数据后从控制器调用它。但是在这种情况下,在这种情况下不存在持久性或刷新,因为你没有保存对应于实体的对象,就没有持久性或冲洗类似的东西,但是我到达并不是真的必须这样做。

这就是我想要存储在另一张表中的原因:

enter image description here

当我验证表单时,我的表单检索到的结果存放在此处(ID:6)

这是我的代码:

public function testAction(Request $request ){
    $poste = new Poste();
    $formPoste = $this->get('form.factory')->create(PosteType::class, $poste );


    $historique = new Historique_employer();


    if ($request->isMethod('POST')&& $formPoste->handleRequest($request)->isValid()) {

        $historique->setPoste($request->request['poste_id']->getData());
        $historique->setCity($request->request['City']->getData());
        $historique->setEmployer($request->request['Employer']->getData());
        $historique->setTemps($request->request['Temps']->getData());


        dump($poste);die();

        $em = $this->getDoctrine()->getManager();
        $em->persist($poste);
        $em->persist($historique);
        $em->flush();
    }



    return $this->render(':stat:teste.html.twig', array(
        'poste' => $formPoste->createView(),
        'historique' => $historique,
        ));

}

我希望将我的数据存储在此实体中:

class Historique_employer 
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * @var Poste
     * @ORM\OneToOne(targetEntity="Poste")
     */
    private $poste;


    /**
     * @var City
     * @ORM\OneToOne(targetEntity="City")
     */
    private $city;


    /**
     * @var Temps
     * @ORM\OneToOne(targetEntity="Temps")
     */
    private $temps;


    /**
     * @var Employer
     * @ORM\OneToOne(targetEntity="Employer")
     */
    private $employer;

但当我完成所有这些时,我会收到此错误消息:

  

不能使用Symfony \ Component \ HttpFoundation \ ParameterBag类型的对象作为数组

1 个答案:

答案 0 :(得分:1)

Symfony 2.8 ParameterBag

您正在访问数组使用的请求参数 mixed get(string $key, mixed $default = null, bool $deep = false)

$historique->setPoste($request->request->get('poste_id'));

改变其余部分,你很高兴。