### Installation commands Source: https://github.com/roundly-consulting/advertisements-for-laravel/blob/main/README.md Commands to install the package and publish migrations. Requires PHP 8.4 with ext-bcmath and Laravel 12 or 13. Set ADVERTISEMENTS_KEY_TYPE=uuid or ulid before migrating if models use UUID or ULID keys. ```bash composer require roundly-consulting/advertisements-for-laravel php artisan vendor:publish --tag="advertisements-migrations" php artisan vendor:publish --tag="media-migrations" # creatives live in media-library-for-laravel php artisan migrate ``` -------------------------------- ### Create and publish an ad Source: https://github.com/roundly-consulting/advertisements-for-laravel/blob/main/README.md Example of creating a placement, creating an ad with AdvertisementData, attaching it to a placement, and publishing it. The author can be any Eloquent model. Pass a date to publish to schedule it. ```php use RoundlyConsulting\Advertisements\DataTransferObjects\AdvertisementData; use RoundlyConsulting\Advertisements\Facades\Advertisements; use RoundlyConsulting\Advertisements\Models\Placement; use RoundlyConsulting\Money\Money; Placement::create(['slug' => 'sidebar', 'name' => ['en' => 'Sidebar']]); $ad = Advertisements::create(new AdvertisementData( name: 'Vintage road bike', price: Money::ofMajor('250.00', 'EUR'), author: $user, // any Eloquent model )); Advertisements::for($ad)->placements()->attach(['sidebar']); Advertisements::publish($ad); // live now; pass a date to schedule it ``` -------------------------------- ### Serve and track an ad Source: https://github.com/roundly-consulting/advertisements-for-laravel/blob/main/README.md Example of retrieving a random live ad for a zone, rendering its creative or fallback, tracking impressions and clicks, and checking impression count and click-through rate. ```php $ad = Advertisements::random('sidebar'); // one live ad for the zone echo Advertisements::render($ad, 'sidebar'); // its creative, or the text-ad fallback Advertisements::for($ad)->track('sidebar')->impression(); Advertisements::for($ad)->track('sidebar')->click(); $ad->impressions(); // 1 $ad->ctr(); // 1.0 ```