继续收到错误:implode():更新数据时传递的参数无效

时间:2017-10-20 08:21:55

标签: php laravel implode

每当我尝试将某些内容更新到我的数据中时,我一直会收到此错误。最后一次并没有发生很多事情,但是在放入新的更新功能之后,错误不断弹出,并且由于某种原因,它指向我输入的新功能,即使我在旧功能处更新。

控制器:

//update for user
    public function edit($id){
        $object = user::find($id);

        return view('edit', compact('object'));

    }

    public function update(Request $request, $id){
        $object = user::find($id);
        $object->Name = $request->input('Name');
        $object->update();

        return redirect('/home');
    }


    //update for Schools table
    public function edit1($id){
      $object2 = school::find($id);
       return view('edit1', compact('object2'));

    }
    public function update1(Request $request, $id){
        $object2 = school::find($id);
        $test = array();
    $test['School'] = implode(' , ', $request->School);
    $test['SDate'] = implode(' , ', $request->SDate);
    $test['EDate'] = implode(' , ', $request->EDate);
        $object2->update($test);
        return redirect('/home');
    }

    //error start here after putting this whole thing in. (I tried putting it into another separate controller but the error still continues)
            public function edit2($id){
      $object3 = hobby::find($id);
       return view('edit2', compact('object3'));

    }
    public function update2(Request $request, $id){
        $object3 = hobby::find($id);
    $test2 = array();
    $test2['computer_game'] = implode(' , ', $request->computer_game);
    $test2['reading_book'] = implode(' , ', $request->reading_book);
        $object3->update($test2);
        return redirect('/home');
    }

即使我尝试更新用户或学校数据时,错误也会突出显示此部分

$test2['computer_game'] = implode(' , ', $request->computer_game);

它说

  

:implode():传递的参数无效

我没有更新爱好数据的问题,但错误一直指向爱好内爆部分。

我是否有可能只在内爆函数上使用更新一次?提前致谢

edit2.blade.php(编辑爱好页面,如图所示)

  <form class="form-horizontal" method="post" action="{{ url('/user/show/'.$object3->id) }}">
              {{ method_field('PUT')  }}
              {{ csrf_field() }}
     <table class="table table-bordered table-hover" id="tab_logic">
            <thead>
              <tr >
                            <th class="text-center">
                  #
                </th>
                <th class="text-center">
                  Sports:
                </th>
                <th class="text-center">
                  Books read:
                </th>
                              </tr>
            </thead>
            <tbody>
              <tr id='addr0'>
                <td>
                1
                </td>
                <td>
                <input type="text" name='computer_game[]' class="form-control"/>
                </td>
                <td>
                <input type="text" name='reading_book[]' class="form-control"/>
                </td>
                              </tr>
                        <tr id='addr1'></tr>
            </tbody>
          </table>
 <input type="submit" class="btn btn-primary" value="Save">

3 个答案:

答案 0 :(得分:2)

只需简单尝试以下内容:

$test2['computer_game'] = implode(' , ', (array)$request->computer_game);

这会将$request->computer_game转换为数组(如果还没有)。

答案 1 :(得分:0)

您收到错误是因为$ request-&gt; computer_game不是数组。这可以通过转储变量并终止脚本来验证。

var_dump($request->computer_game); die;

答案 2 :(得分:0)

首先是var_dump();给出了面向对象的数组。然后我们将尝试回答。

然后停止多次加载你可以创建一个私有var($ loaded),默认情况下它将是false private static $loaded = false;然后在函数使用中启动任何代码if if语句来检测加载是否为真

if(self::$loaded){
    return;
}
self::$loaded = true
这对你有所帮助!请发布var_dump!