【问题标题】:Persist array in db在数据库中持久化数组
【发布时间】:2015-08-21 16:46:51
【问题描述】:

我通过控制器中的 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++
}

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

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    您将 $user 作为数组和对象混合在一起。还输入 $data 包含要保存的数组,但 $data 本身不需要 foreach。

    试试改成:

    $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();
    }
    

    【讨论】:

    • 注意:未定义索引:login[$i]
    • 尝试更改为“$ud['login'][$i]”而不是“$ud['login[$i]']”。顺便说一句,但是您看到使用该索引 $i = 0 您将只保存 $ud['login'] 数组中的第一个变体,对吗?
    • 注意:未定义索引:登录
    • 立即尝试。我更新了解决方案。在 $data 你将有数组。所以 - 你不需要 foreach 数据,只需要 foreach 数据内的输入参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 2023-02-07
    • 2010-10-15
    • 2015-08-19
    相关资源
    最近更新 更多