【发布时间】:2020-02-09 10:08:36
【问题描述】:
我正在尝试使用 Laravel 和 Ajax 制作一个非常简单的博客,每篇博文都有点赞,所以我想通过在控制台中单击和更新数据库来增加点赞数。
这是我的架构:
Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->longText('blogContent');
$table->timestamps();
$table->integer('likes')->default(8);
});
这是我的刀片模板和脚本:
@section('content')
<div class="myFeedContainer col-lg-9 col-md-12 col-sm-12">
@foreach ($blogs as $blog)
<div class='blogContainer'>
<h5 class='blogTitle'>{{$blog->title}}</h5>
<h6 class='blogDate'>{{$blog->created_at}}</h6>
<p class='blogContent1' >{{$blog->blogContent}}</p>
<hr>
<h6 class='blogLikes' class="clickforlikes" data-id='{{$blog->id}}'>
{{$blog->likes}}
<ion-icon name="heart" ></ion-icon>
</h6>
<br>
</div>
@endforeach
<div id='pagina'>{{ $blogs->render() }}</div>
<script>
$('.clickforlikes').on("click", function(){
$.ajax({
url:'updateLikes',
type: 'POST',
data: {
blog_id: $(this).attr('data-id')
},
success: function (data){
console.log(data);
},
error: function(request, stqtus, error){
console.log('code: ' + request.status + '\n' + 'msg: '+request.responseText+'\n'+'error: ' + error);
}
});
});
</script>
</div>
@endsection
这是我控制器的功能
public function updateLikes()
{
$blog_Id = $_POST['blog_id'];
$blog = Blog::find($blog_Id)->increment('likes');
$blog->save();
}
这是路由器:
Route::post('/updateLikes', 'BlogsController@updateLikes');
【问题讨论】:
-
实际错误是什么?
-
$blog_Id = $_POST['blog_id'];你应该使用请求验证laravel.com/docs/6.x/… -
旁注:您不需要调用
save,increment运行查询来更新记录并同步属性