【问题标题】:Symfony - saving array to databaseSymfony - 将数组保存到数据库
【发布时间】:2019-03-23 02:01:22
【问题描述】:

我写了一个函数,我可以在其中获取需要发布到我的数据库的标记数组..

我的函数将它存储在一个归档行中,例如:

而且我只需要每列单独拉一个,例如:

这是我的 api 调用..

public function generate(Map $seatMap)
{
    $layout = $seatMap->getSeatLayout();

    $seats = [];

    $layoutArray = json_decode($layout, true);

    $columns = range('A', 'Z');

    foreach($layoutArray as $index => $result)
    {
        $columnLetter = $columns[$index];
        $letters = str_split($result);

        $letterIndex =  1;
        foreach($letters as $letterIndex => $letter) {
            switch($letter) {
                case 'e':
                    $seats[] = $columnLetter . $letterIndex;
                    $letterIndex++;

            }
        }
    }

    foreach($seats as $seat => $result) {
        $result = new Seat();
        $result->setName(json_encode($seats));

        $this->em->persist($result);
        $this->em->flush();
        }
    }

有什么建议吗? 我认为问题出在我需要将其存储到数据库的部分..

【问题讨论】:

  • 你所说的“每列只拉一个”是什么意思?
  • 为 A1 插入新行,为 A2 插入新行等。
  • 因此您希望创建多个Seat 实例。为什么要尝试将其编码为 json 并传递给单个 Seat 实例?
  • 是的。我坚持下去,所以我不知道还能尝试什么。有什么建议吗?

标签: arrays json database api symfony


【解决方案1】:

如果我理解正确,您的问题就在这里:

foreach($seats as $seat => $result) {
    $result = new Seat();
    $result->setName(json_encode($seats));

    $this->em->persist($result);
    $this->em->flush();
    }
}

您确实为每个座位创建了新的 Seat 实例,但是在这一行中:

$result->setName(json_encode($seats));

您仍然将所有(编码的)席位分配给Seat 的每个实例。您想要的是仅分配当前循环迭代中的席位,由$result 变量表示。

那就试试吧:

$result->setName($result);

这里也不需要json_encode

【讨论】:

  • 我试过了。它像这样保存它----名称:[“A0”,“A1”,“A2”],我希望每个字母都插入一个新行..
  • 这就是您使用 json 对所有座位进行编码时所得到的结果。我认为您没有尝试过,因为尝试两种不同的东西时不可能得到相同的结果。如果您从未将它们全部传递给Seat::setName,您将无法获得["A0","A1", "A2"]。你一定搞砸了。
【解决方案2】:

如果你的数组和你说的一样,那么试试这个

foreach($seats as $seat) {
    $result = new Seat();
    $result->setName($seat);

    $this->em->persist($result);
    $this->em->flush();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2012-09-29
    • 1970-01-01
    • 2013-05-31
    • 2019-11-22
    相关资源
    最近更新 更多