/** * Add a view to the given entity. * @param Entity $entity * @return int */ public function add(Entity $entity) { if ($this->user === null) { return 0; } $view = $entity->views()->where('user_id', '=', $this->user->id)->first(); // Add view if model exists if ($view) { $view->increment('views'); return $view->views; } // Otherwise create new view count $entity->views()->save($this->view->create(['user_id' => $this->user->id, 'views' => 1])); return 1; }