https://github.com/laravel-interaction/visit
🔍 User visit behaviour for Laravel.
https://github.com/laravel-interaction/visit
eloquent laravel visit
Last synced: 2 months ago
JSON representation
🔍 User visit behaviour for Laravel.
- Host: GitHub
- URL: https://github.com/laravel-interaction/visit
- Owner: laravel-interaction
- License: mit
- Created: 2020-12-09T15:17:52.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2026-02-06T04:15:22.000Z (4 months ago)
- Last Synced: 2026-02-06T13:36:54.057Z (4 months ago)
- Topics: eloquent, laravel, visit
- Language: PHP
- Homepage:
- Size: 118 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Laravel Visit
User visit behaviour for Laravel.
## Introduction
It used to record the number of visits to the model(documentation/subject/question).

## Installation
### Requirements
- [PHP 8.0+](https://php.net/releases/)
- [Composer](https://getcomposer.org)
- [Laravel 8.0+](https://laravel.com/docs/releases)
### Instructions
Require Laravel Visit using [Composer](https://getcomposer.org).
```bash
composer require laravel-interaction/visit
```
Publish configuration and migrations
```bash
php artisan vendor:publish --tag=visit-config
php artisan vendor:publish --tag=visit-migrations
```
Run database migrations.
```bash
php artisan migrate
```
## Usage
### Setup Visitor
```php
use Illuminate\Database\Eloquent\Model;
use LaravelInteraction\Visit\Concerns\Visitor;
class User extends Model
{
use Visitor;
}
```
### Setup Visitable
```php
use Illuminate\Database\Eloquent\Model;
use LaravelInteraction\Visit\Concerns\Visitable;
class Subject extends Model
{
use Visitable;
}
```
### Visitor
```php
use LaravelInteraction\Visit\Tests\Models\Subject;
/** @var \LaravelInteraction\Visit\Tests\Models\User $user */
/** @var \LaravelInteraction\Visit\Tests\Models\Subject $subject */
// Visit to Visitable
$user->visit($subject);
// Compare Visitable
$user->hasVisited($subject);
$user->hasNot
Visited($subject);
// Get visited info
$user->visitVisitors()->count();
// with type
$user->visitVisitors()->withType(Subject::class)->count();
// get visited subjects
Subject::query()->whereVisitedBy($user)->get();
// get subjects doesnt visited
Subject::query()->whereNotVisitedBy($user)->get();
```
### Visitable
```php
use LaravelInteraction\Visit\Tests\Models\User;
use LaravelInteraction\Visit\Tests\Models\Subject;
/** @var \LaravelInteraction\Visit\Tests\Models\User $user */
/** @var \LaravelInteraction\Visit\Tests\Models\Subject $subject */
// Compare Visitor
$subject->isVisitedBy($user);
$subject->isNotVisitedBy($user);
// Get visitors info
$subject->visitors->each(function (User $user){
echo $user->getKey();
});
$subjects = Subject::query()->withVisitorsCount()->get();
$subjects->each(function (Subject $subject){
// like uv
echo $subject->visitors()->count(); // 1100
echo $subject->visitors_count; // "1100"
echo $subject->visitorsCount(); // 1100
echo $subject->visitorsCountForHumans(); // "1.1K"
// like pv
echo $subject->visitableVisits()->count(); // 1100
echo $subject->visits_count; // "1100"
echo $subject->visitsCount(); // 1100
echo $subject->visitsCountForHumans(); // "1.1K"
});
$subjects = Subject::query()->withVisitorsCount(function ($query){
return $query->whereKey(1);
})->get();
```
## With Api Request
```php
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use LaravelInteraction\Visit\Tests\Models\Subject;
use Illuminate\Http\Resources\Json\JsonResource;
class AuctionController extends Controller
{
public function show($id, Request $request){
$subject = Subject::query()->findOrFail($id);
dispatch(function () use ($subject, $request) {
$subject->record($request);
})->afterResponse();
return new JsonResource($subject);
}
}
```
### Events
| Event | Fired |
| --- | --- |
| `LaravelInteraction\Visit\Events\Visited` | When an object get visited. |
## License
Laravel Eloquent Visit is an open-sourced software licensed under the [MIT license](LICENSE).