Как я могу вернуть количество лайков в Laravel с AJAX

вот мой app.blade

$('.like').click(function(event) {
var id = $(this).data('id');
$.ajax({
url: "{{route('post.like','')}}/"+id,
})
});

и вот мой AdsController.php

public function likePost(Request $request){
$likePost=new Like;
$likePost->user_id=Auth::user()->id;
$likePost->ad_id= $request->id;
$likePost->save();
}

когда я нажимаю кнопку «Мне нравится», данные вставляются в таблицу «Нравится», но я также хочу увеличить число лайков в представлении.

пожалуйста, кто-то может мне помочь

0

Решение

В вашем likePost функция, после того как вы сохранили Like затем выполните одно из следующих действий:

Если вы хотите вернуть количество лайков, которые есть у пользователя:

$likes = Like::where('user_id', Auth::user()->id)->count();

Если вы хотите вернуть количество лайков в объявлении:

$likes = Like::where('ad_id', $request->id)->count();

Если вы хотите вернуть количество всех лайков:

$likes = Like::count();

Затем, поскольку это AJAX-запрос, вам нужно будет вернуть JSON-ответ в свой likePost функция:
https://laravel.com/docs/5.6/responses#json-responses

return response()->json([
'likes' => $likes
]);

И в вашем JavaScript, подобрать ответ так:

$.ajax({
url: "{{route('post.like','')}}/"+id,
}).done(function(response) {
var likes = response.likes; <-- num of likes
});

отредактированный

Чтобы отобразить в представлении, просто добавьте класс или идентификатор к элементу html, для которого вы хотите отобразить число, например:

<div id="numberOfLikes"></div>

Затем вы можете установить его внутреннее HTML-содержимое, используя ответ, полученный от AJAX:

$.ajax({
url: "{{route('post.like','')}}/"+id,
}).done(function(response) {
var likes = response.likes;
$('#numberOfLikes').html(response.likes);
});
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]