输入Laravel 4项目中的错误

时间:2016-02-18 12:56:18

标签: laravel laravel-4 controller

我很喜欢laravel和php而且我缺乏经验。我正在为一个已经构建的项目工作,并且我无法修复 “SeminarController” 这里的错误代码:

                if(Input::has('relative_link_titles')){
                $rldesc = Input::get('relative_link_titles');
                $rllinks = Input::get('relative_link_urls');
                $array = array_combine($rldesc,$rllinks);

                while($ar = current($array)){
                    $val = Relative_PackageLinks::where('relpl_desc',key($array))->get();
                    if(empty($val[0])){
                        $newlink = new Relative_PackageLinks();
                        $newlink->relpl_desc = key($array);
                        $newlink->relpl_packageid = $id;
                        $newlink->relpl_link = current($array);
                        $newlink->save();
                    }
                    next($array);
                }

                $result = Relative_PackageLinks::whereNotIn('relpl_desc',$rldesc)->delete();
            } else {
                Relative_PackageLinks::where('relpl_packageid',$id)->delete();
            }`

当我按下保存时,如果输入'relative_link_titles'具有相同的名称,它会清除所有表格,我不明白为什么所以任何有经验的php和laravel都会有很多帮助来回答这个问题。谢谢你好!

3 个答案:

答案 0 :(得分:0)

从Input :: get()返回的数组将是一个索引数组而不是关联数组。因此,当您执行key($array)时,它会传递0,1,2等,而不是输入文本

另外,使用while会使情况混乱;最好使用foreach

尝试这一点,虽然如果没有对每个字段中保存的内容进行一些解释,很难确切知道你要做什么。

$rldesc = Input::get('relative_link_titles');
$rllinks = Input::get('relative_link_urls');
$array = array_merge($rldesc, $rllinks);

foreach($array as $value) {
   $val = Relative_PackageLinks::where('relpl_desc', $value)->first();

   if(!$val) {
      $newlink = new Relative_PackageLinks();
      $newlink->relpl_desc = $value;
      $newlink->relpl_packageid = $id;
      $newlink->relpl_link = $value;
      $newlink->save();
}

$result = Relative_PackageLinks::whereNotIn('relpl_desc',$rldesc)->delete();

答案 1 :(得分:0)

这里是视图刀片,我也希望这些输入适用于我的项目中的每个研讨会,事实是上面的代码保存不要让它相同< strong>&#34;说明链接&#34; 输入或删除所有表(相对链接)

<table id="relative-links-output" class="table table-striped table-hover">
            @foreach($relative_links as $rl)
            <tr>
                <td>{{ $rl->relpl_desc }}</td>
                <td>{{ $rl->relpl_link }}</td>
                <td class='col-md-1'><a href='#' class='remove-relative-link btn btn-danger'><i class='fa fa-minus'></i></a></td>
                <input type="hidden" name="relative_link_titles[]" value="{{ $rl->relpl_desc }}">
                <input type="hidden" name="relative_link_urls[]" value="{{ $rl->relpl_link }}">
            </tr>
            @endforeach
        </table>

答案 2 :(得分:0)

我做到了很简单我只需要将where('relpl_packageid',$id)->添加到$ result和$ val,以便while循环每次检查特定的$ id