简体   繁体   English

模型未更新Laravel

[英]Model not updating laravel

I can't seem to update my user and school table anymore but was able to update hobby table now. 我似乎无法再更新用户和学校表,但现在可以更新兴趣表了。

Keep getting error: implode(): Invalid arguments passed when updating data --> linking back to the question before 不断出错:implode():更新数据时传递了无效的参数 ->之前链接回问题

Controller: 控制器:

        //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');
        }

        // The error starts 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();
            $reading_book           = (array)$request->reading_book;
            $test2['reading_book']  = implode(' , ',$reading_book );
            $computer_game          = (array)$request->computer_game;
            $test2['computer_game'] = implode(' , ',$computer_game );

            $object3->update($test2);

            return redirect('/home');
        }

Hobby model: 爱好模型:

   <?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;
    use Eloquent;

    class hobby extends Eloquent
    {
        protected $fillable = array('reading_book','computer_game','user_id');

        public function users() {
            return $this->belongsTo('App\user, 'user_id', 'id');
        }
    }

Route: (currently using these for updating) 路线:(当前使用这些路线进行更新)

Route::get('/user/show/{id}/edit', 'HomeController@edit');
Route::put('/user/show/{id}','HomeController@update');


Route::get('/user/show/{id}/edit1', 'HomeController@edit1');
Route::put('/user/show/{id}','HomeController@update1');


Route::get('/user/show/{id}/edit2', 'HomeController@edit2');
Route::put('/user/show/{id}','HomeController@update2');

The problem is in your routes : 问题出在您的路线上:

Route::put('/user/show/{id}','HomeController@update');

Route::put('/user/show/{id}','HomeController@update1');

Route::put('/user/show/{id}','HomeController@update2');

It's the same route for three methods. 这是三种方法的相同路线。

Just for testing you can do that : 只是为了测试,您可以这样做:

Route::put('/user/show/{id}','HomeController@update');

Route::put('/user/showupdate1/{id}','HomeController@update1');

Route::put('/user/showupdate2/{id}','HomeController@update2');

And change in the view this will work perfectly :) 并改变视图,这将完美地工作:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM