-
app/Models/Link.php
Open in GitHubuse Illuminate\Database\Eloquent\Attributes\Scope; class Link extends Model { // ... #[Scope] public function approved(Builder $query) : void { $query ->whereNotNull('is_approved') ->whereNull('is_declined'); } // ... }
-
app/Http/Controllers/Links/ListLinksController.php
Open in GitHubuse App\Models\Link; use Illuminate\View\View; use App\Http\Controllers\Controller; use Illuminate\Database\Eloquent\Builder; class ListLinksController extends Controller { public function __invoke() : View { $distinctUsersQuery = Link::query() ->select('user_id') ->distinct('user_id') ->whereRelation('user', function (Builder $query) { $query ->whereNotIn('email', [ '[email protected]', '[email protected]', '[email protected]', '[email protected]', ]) ->whereNotNull('avatar'); }); return view('links.index', [ 'distinctUserAvatars' => $distinctUsersQuery ->with('user') ->approved() ->inRandomOrder() ->limit(10) ->get() ->map(fn (Link $link) => $link->user->avatar), 'distinctUsersCount' => $distinctUsersQuery->count(), 'links' => Link::query() ->with('user') ->approved() ->latest('is_approved') ->paginate(12), ]); } }