在db中持久化数组

时间:2015-08-21 08:27:19

标签: php symfony doctrine-orm

我通过控制器中的ajax发送数据。我在jquery中动态创建表单,这就是我的帖子请求中有数组的原因。它看起来像这样

array (size=3)
'login' => 
  array (size=2)
    0 => string 'trololo' (length=7)
    1 => string 'trololo2' (length=8)
'pass' => 
  array (size=2)
    0 => string 'trololo' (length=7)
    1 => string 'trololo2' (length=8)
'email' => 
  array (size=2)
    0 => string 'trololo@gmail.com' (length=17)
    1 => string 'trololo@gmail.com2' (length=18)

在我的控制器中,我希望将其保留在我的数据库中。我这样做:

$data = $request->request->all();
$i = 0;
foreach($data as $ud)
{
  $user[] = new User();
  $user->setLogin($ud['login[$i]']);
  $user->setPass($ud['pass[$i]']);
  $user->setEmail($ud['email[$i]']);
  $em->persit($user[$i])
  $em->flush();
  $em->clear();
  $i++
}

但它不起作用。请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您将$ user与数组混合为对象。另外输入$ data包含要保存的数组,但是你不需要foreach for $ data。

尝试将其更改为:

$data = $request->request->all();
foreach($data['login'] as $i => $login)
{
  $user = new User();
  $user->setLogin($login);
  $user->setPass($data['pass'][$i]);
  $user->setEmail($data['email'][$i]);
  $em->persit($user);
  $em->flush();
  $em->clear();
}