从表中删除行时遇到问题。
这个问题似乎与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
先谢谢
答案 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);