Implement new view count system on blog article

This commit is contained in:
Daniel_I_Am 2021-09-04 12:09:42 +02:00
parent 13eb273772
commit 5c260b98f6
2 changed files with 19 additions and 7 deletions

View File

@ -89,14 +89,23 @@ class BlogArticleController extends Controller
* @param \App\Models\BlogArticle $blogArticle
* @return \Illuminate\Http\JsonResponse
*/
public function show(BlogArticle $blogArticle)
public function show(int $id)
{
if (!$this->authService->isAuthenticated() && !$blogArticle->published) {
$blogArticle = BlogArticle::withCount('views')->find($id);
if ($blogArticle === null) {
abort(404);
}
$blogArticle->views += 1;
$blogArticle->save();
if (!$this->authService->isAuthenticated()) {
if (!$blogArticle->published) {
abort(404);
}
views($blogArticle)
->cooldown(now()->addHour())
->record();
}
return response()->json($blogArticle);
}

View File

@ -2,12 +2,15 @@
namespace App\Models;
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use CyrildeWit\EloquentViewable\InteractsWithViews;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BlogArticle extends Model
class BlogArticle extends Model implements Viewable
{
use HasFactory;
use InteractsWithViews;
protected $fillable = [
'title',
@ -15,7 +18,6 @@ class BlogArticle extends Model
'date',
'summary',
'content',
'views',
'published'
];
@ -24,7 +26,8 @@ class BlogArticle extends Model
'created_at' => 'datetime',
'updated_at' => 'datetime',
'date' => 'datetime',
'views' => 'integer',
'published' => 'boolean',
];
protected $removeViewsOnDelete = true;
}