Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5 Laravel中不存在方法更新_Laravel 5 - Fatal编程技术网

Laravel 5 Laravel中不存在方法更新

Laravel 5 Laravel中不存在方法更新,laravel-5,Laravel 5,更新现有条目的代码非常简单。save()工作正常。但更新不起作用。这是我的密码: Route::post('toggleFavourite',function(){ try{ $data = Request::all(); extract($data); $favourite = \ItScholarBd\Api\Models\Favourite::where(['user_id'=> $user_id,'shop_id'=>

更新现有条目的代码非常简单。save()工作正常。但更新不起作用。这是我的密码:

Route::post('toggleFavourite',function(){
    try{
        $data = Request::all();
        extract($data);
        $favourite = \ItScholarBd\Api\Models\Favourite::where(['user_id'=> $user_id,'shop_id'=> $shop_id])->get();
        if(empty($favourite)){
            $favourite = new \ItScholarBd\Api\Models\Favourite;
            $favourite->user_id = $user_id;
            $favourite->shop_id = $shop_id;
            $favourite->status  = $status;
            $favourite->save();
        }else{
            $favourite->status  = $status;
            $favourite->update();
        }
        return response()->json(['status' =>1, 'data' => $favourite], 200); 
    }
    catch (Exception $ex) {
        return response()->json(['status'=>0, 'status_text' => $ex->getMessage()], 500);

    }
});
我得到以下回应:

{"status":0,"status_text":"Method update does not exist."}

文件中提到了以下更新

$flight = App\Models\Flight::find(1);

$flight->name = 'New Flight Name';

$flight->save();

我相信,要使代码正常工作,唯一需要更改的就是替换
$favorite->update()$favorite->save()进行编码>,但我试图使您的代码简单一点:

use Illuminate\Http\Request;
use ItScholarBd\Api\Models\Favourite;

Route::post('toggleFavourite', function (Request $request) {
    try {
        $user_id = $request->get('user_id');
        $shop_id = $request->get('shop_id');
        $status = $request->get('status');

        // get the existing favourite or a new instance
        $favourite = Favourite::where(['user_id' => $user_id, 'shop_id' => $shop_id])->firstOrNew();

        // check if it exists in the database
        if (!$favourite->exists()) {
            $favourite->user_id = $user_id;
            $favourite->shop_id = $shop_id;
        }

        $favourite->status = $status;
        $favourite->save();

        return response()->json(['status' => 1, 'data' => $favourite], 200);
    } catch (Exception $ex) {
        return response()->json(['status' => 0, 'status_text' => $ex->getMessage()], 500);
    }
});
附言:


您应该添加到路由中,这样您就不会只接受和存储请求中发送的任何值。

根据我的观察,我得出一个结论: 更新仅适用于find($id)方法的对象。以下代码可以完美地工作:

try {
        $data = Request::all();
        extract($data);
        $favourite = Favourite::where(['user_id' => $user_id, 'shop_id' => $shop_id]);
        if (!$favourite->count()) {
            $favourite = new Favourite;
            $favourite->user_id = $user_id;
            $favourite->shop_id = $shop_id;
            $favourite->status = $status;
            $favourite->save();
        }else{
            $favourite  = $favourite->get()->toArray();
            $favourite = Favourite::find($favourite[0]['id']);
            $favourite->status = $status;
            $favourite->update();
            
        }
        return response()->json(['status' => 1, 'data' => $favourite], 200);
} catch (Exception $ex) {

    return response()->json(['status' => 0, 'status_text' => $ex->getMessage()], 500);
}

我们对“简单代码”有不同的定义…