获得插入数据库的正确结果 - Laravel

时间:2015-03-06 13:00:00

标签: php mysql forms laravel

我试图将数据存储在此表中:

newspaper_id

的article_id

评论(字符串)

这就是我的HTML的样子:

<div class="newspaper-options">
    <input class="form-control" name="data[]" type="text">
    <input type="checkbox" class="article-option" name="article_id[]" value="3"> Active
</div>

<div class="newspaper-options">
    <input class="form-control" name="data[]" type="text">
    <input type="checkbox" class="article-option" name="article_id[]" value="1"> Active
</div>

当我只填写第二份报纸选项并检查时,这是我回来的结果:

"comment" => array:2 [▼

    0 => ""

    1 => "option 2"

  ]

  "article_id" => array:1 [▼

    0 => "1"

  ]

我遇到的问题是如何对输入值进行分组,以便将其存储在我的表中。我的复选框的值是article_id的值。并且text字段用于填充数据库中的注释。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

将该信息正确放入数据库时​​缺少的信息是数组位置到article_id的映射。

E.g。放     <input name="article[]" type="hidden" value="..."> 在每个<div class="newspaper-options">

喜欢这样

<div class="newspaper-options">
    <input name="article[]" type="hidden" value="3">
    <input class="form-control" name="data[]" type="text">
    <input type="checkbox" class="article-option" name="article_id[]" value="3"> Active
</div>

<div class="newspaper-options">
    <input name="article[]" type="hidden" value="1">
    <input class="form-control" name="data[]" type="text">
    <input type="checkbox" class="article-option" name="article_id[]" value="1"> Active
</div>

然后在您的控制器中,您可以循环使用Input :: get(&#39; article&#39;),选中活动复选框并添加评论。

E.g。

foreach(Input::get('article') as $pos => $article_id){
    if(in_array($article_id, Input::get('article_id')){
        add $article_id and Input::get('comment')[$pos] to DB
    }
}

除此之外,你应该为你的article_id字段找到一个更好的名字,比如&#34; active&#34;并改变&#34;数据&#34;到&#34;评论&#34;。


如果您可以首先使用键添加输入字段,则可以更轻松地处理它们。我想有可能做到

<input class="form-control" name="data[3]" type="text">
<input type="checkbox" class="article-option" name="article_id[3]" value="3"> Active