- Review system: ReviewController (store/update/destroy), ReviewPolicy, Review model boot() hooks, review form with Alpine.js (spoiler toggle, edit/delete UX) - Search autocomplete: Alpine.js searchWidget in nav with 300ms debounce, keyboard navigation, 6-result dropdown - SEO: og:image, twitter:card in layout; og sections + Schema.org VideoGame JSON-LD on game show pages - Custom lists: UserList/UserListGame models, ListController, ListPolicy, lists index/show views, Add-to-List button on game pages Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
15 lines
416 B
PHP
15 lines
416 B
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
class UserListGame extends Model
|
|
{
|
|
protected $fillable = ['user_list_id', 'game_id', 'order', 'notes'];
|
|
|
|
public function list(): BelongsTo { return $this->belongsTo(UserList::class, 'user_list_id'); }
|
|
public function game(): BelongsTo { return $this->belongsTo(Game::class); }
|
|
}
|