这必须是一个基本问题。我有一个post请求从数据库表中删除记录,但它没有删除。这是因为在我的AJAX请求和URL中,我引用了表中记录的ID,但是控制器方法没有将此变量与ID列相关联。
JS:
$ notificationId是数据库表中该记录的呈现ID。
$('.remove-notification').click(function(e){
e.preventDefault();
$userUsername = $('.user-username').text();
$notificationId = $(this).parent().siblings('.notification-id').text();
$.ajax({
type: "POST",
url: "/"+$userUsername+"/notifications/delete/"+$notificationId,
error: function(data){
/*Retrieve errors and append any error messages.*/
var errors = $.parseJSON(data.responseText);
console.log(errors);
},
success: function(data){
console.log(data);
}
});
});
控制器:
public function postDeleteNotification(Request $request, $id)
{
if ($request->ajax())
{
DB::table('notifications_user')
->where('user_id', Auth::user()->id)
->where('id', $id)
->delete();
}
}
请求处理没有任何错误,请求的URL在控制台中看起来很好。如果我删除“ - > where('id',$ id)”,那么基本的删除方法有效,所以我知道这是where语句的问题。任何帮助表示赞赏。谢谢!
更新:
Route::post('/{username}/notifications/confirm', [
'uses' => '\App\Http\Controllers\NotificationController@postConfirmNotifications',
'middleware' => ['auth'],
]);
Route::post('/{username}/notifications/delete/{notificationId}', [
'uses' => '\App\Http\Controllers\NotificationController@postDeleteNotification',
'middleware' => ['auth'],
]);
Route::post('/{username}/notifications/all/delete', [
'uses' => '\App\Http\Controllers\NotificationController@postDeleteNotificationAll',
'middleware' => ['auth'],
]);
答案 0 :(得分:1)
我只是想知道你的方法应该是什么样的
public function postDeleteNotification(Request $request,$username, $id)
{
if ($request->ajax())
{
DB::table('notifications_user')
->where('user_id', Auth::user()->id)
->where('id', $id)
->delete();
}
}