Models
ShortifyUrl
Maps an original_url to a unique code.
| Attribute | Notes |
|---|---|
code | Unique, case-sensitive (collation configurable) |
original_url | Destination URL |
user_id | Optional owner |
visit_count | Incremented when visits are tracked |
expires_at / expired | Expiry state |
deleted_at | Soft deletes |
Helpers:
use BradieTilley\Shortify\Models\ShortifyUrl;
ShortifyUrl::findByCode('ABC123');
ShortifyUrl::redirectTo('ABC123'); // redirect or throw
$url->url; // absolute short URL
$url->isExpired();
$url->expireIfExpired();
$url->visit();
$url->visits; // ShortifyVisit collection
$url->owner; // authenticatable user, if set
Soft-deleted URLs are ignored by findByCode / redirects (treated as not found).
The unique code constraint still includes soft-deleted rows — force-delete
before reusing a code.
ShortifyVisit
One row per recorded visit:
| Attribute | Notes |
|---|---|
shortify_url_id | Parent URL |
user_id | Authenticated visitor, if any |
ip | Request IP |
user_agent | User-Agent header |
created_at | No updated_at |
Swapping models
'models' => [
'user' => App\Models\User::class,
'shortify_url' => App\Models\ShortUrl::class,
'shortify_visit' => App\Models\ShortVisit::class,
],
Custom URL / visit models should extend the package base classes.