вот мой 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();
}
когда я нажимаю кнопку «Мне нравится», данные вставляются в таблицу «Нравится», но я также хочу увеличить число лайков в представлении.
пожалуйста, кто-то может мне помочь
В вашем 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);
});
Других решений пока нет …