Как я могу вернуть несколько лайков в arax? - PullRequest
0 голосов
/ 27 апреля 2018

вот мой 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();
}

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

1 Ответ

0 голосов
/ 27 апреля 2018

В вашей функции 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);
});
...