Я получаю 500 Internal Server Error и не могу определить причину проблемы.Этот запрос должен удалить комментарий с определенным идентификатором из базы данных.Идентификатор передается с использованием скрытого ввода.Вот мой код:
Моя форма:
<form method='POST' action=''>
<input type="hidden" name="comment_id" value="{{ $comment->id }}">
{{ csrf_field() }}
{{ method_field('delete') }}
<button class='submit-btn delete-comment' type='submit' name='commentDelete'>X</button>
</form>
<script>
var urlDeleteComment = '{{ route('deleteComment') }}';
</script>
Мой маршрут:
Route::delete('/comment', 'CommentsController@deleteComment')->name('deleteComment');
Мой JavaScript:
$('.delete-comment').on('click', function(event) {
event.preventDefault();
var commentId = $("input[name=comment_id]").val();
$.ajax({
method: 'POST',
url: urlDeleteComment,
data: {
commentId: commentId,
_token: token
}
}).done(function(response) {
})
});
Мой PHP:
public function deleteComment(Request $request){
$commentId = $request['commentId'];
$comment = Comment::find($commentId);
$comment->delete();
}
После того, как я использую console.log (commentId) в JavaScript, я получаю идентификатор числа, поэтому кажется, что я его успешно получаю.К сожалению, я не уверен, как устранить проблему 500 Внутренняя ошибка сервера.Я просто знаю, что это ошибка на стороне сервера, но я не могу понять, что это такое.
Любая помощь будет оценена.Спасибо.
Я проверил журналы и увидел эту ошибку:
[2018-12-20 22:12:23] local.ERROR: SQLSTATE [23000]: нарушение ограничения целостности: 1048 столбец'user_id' не может быть пустым (SQL: вставить в comments
(user_id
, image_id
, comment
, updated_at
, created_at
) значения (,,, 2018-12-20 22:12:23, 2018-12-20 22:12:23)) {"userId": 1, "email": "bojidar_s_k@abv.bg", "exception": "[object] (Illuminate \ Database \ QueryException (код: 23000)): SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец 'user_id' не может иметь значение null (SQL: вставить в значения comments
(user_id
, image_id
, comment
, updated_at
, created_at
) (2018-12-20 22:12:23, 2018-12-20 22:12:23)) в C: \ MAMP \ htdocs \ Art \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php: 664, PDOException (код: 23000): SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'user_id' не может быть пустым в C: \ MAMP \ htdocs \ Art \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ \Connection.php: 458) [stacktrace]
Теперь странно то, что это не канунn часть функции deleteComment (), а не часть предыдущей функции postComment ().Я решил опубликовать полный код PHP:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Comment;
use App\Image;
class CommentsController extends Controller
{
public function postComment(Request $request){
$userId = $request['userId'];
$imageId = $request['imageId'];
$commentText = $request['comment'];
$image = Image::with('user')->find($imageId);
$comment = new Comment();
$comment->user_id = $userId;
$comment->image_id = $imageId;
$comment->comment = $commentText;
$comment->save();
$image->updateComments();
return response()->json(['comment'=>$comment, 'image'=>$image]);
}
public function deleteComment(Request $request){
$commentId = $request['commentId'];
$comment = Comment::find($commentId);
$comment->delete();
}
}