尝试在Laravel中删除一行时“调用未定义的方法stdClass :: delete()”错误

时间:2015-04-17 12:14:16

标签: php mysql database laravel laravel-4

从表中删除行时遇到问题。

这个问题似乎与this question非常相似,但它没有解决问题。

我的控制器功能如下:

public function favourites() {

        //get relevant data for DB insert
        $spot_id = Input::get('spot_id');
        $user_id = Auth::user()->id;

        //query DB if favourite exists
        $query = DB::table('favourites')
            ->where('spot_id', '=', $spot_id)
            ->where('user_id', '=', $user_id);

        $check_favourites = $query->first();

        if (is_null($check_favourites)) {
            //doesnt exist - create record
            $favourite              = new Favourite;
            $favourite->spot_id     = $spot_id;
            $favourite->user_id     = $user_id;
            $favourite->save();

            //return ajax true
            return json_encode(true);               

        } else {
            // exists - delete record
            $check_favourites->delete();
            //return ajax false
            return json_encode(false);      
        }

}

我正在使用Laravel 4.2

先谢谢

2 个答案:

答案 0 :(得分:3)

要使用Eloquent delete()方法,您需要使用Eloquent,而不是Query Builder

而不是:

//query DB if favourite exists
$query = DB::table('favourites')
    ->where('spot_id', '=', $spot_id)
    ->where('user_id', '=', $user_id);

$check_favourites = $query->first();

应该是:

$check_favourites = Favourite::where('spot_id', '=', $spot_id)
    ->where('user_id', '=', $user_id)
    ->first();

  

注意:查询构建器上提供的所有方法也可用   在查询Eloquent模型时。

答案 1 :(得分:2)

你有两个选择,@ limonte的答案(我更喜欢)或使用id来运行删除查询:

DB::table('favourites')->delete($check_favourites->id);