此文章主要说明点赞业务逻辑,具体项目需要使用ajax无刷新点赞操作,参见另一篇文章

1、Model Post.php

    //判断此文章是否被该用户赞过
public function zan($user_id){
return $this->hasOne(\App\Zan::class)->where('user_id',$user_id);
}

//获取点赞刺文章的赞的模型
public function zans(){
return $this->hasMany(\App\Zan::class);
}

2、前台页面判断显示 赞/取消赞 按钮

@if($post->zan(\Auth::id())->exists())
<a href="/posts/{{$post->id}}/unzan" type="button" >取消赞</a>
@else
<a href="/posts/{{$post->id}}/zan" type="button" >赞</a>
@endif

3、PostController控制器判断

 public function zan(Post $post){

$param = [
'user_id' => \Auth::id(),
'post_id' => $post->id
];

Zan::firstOrCreate($param);
return back();
}

public function unzan(Post $post){

$post->zan(\Auth::id())->delete();
return back();

}