laravel-eloquent-uuid-slug
laravel-eloquent-uuid-slug copied to clipboard
Trait doesn't preserves Eloquent model generic when running static analysis
Running PHPStan on this code will return the error below
$shoppingLists = ShoppingList::with("items")
->authorOrMemberMatching($user)
->when(
$sort === ViewOrder::UncompletedFirst->value,
fn (Builder $query): Builder =>
$query->withCount(["items" => fn (Builder $item): Builder => $item->uncompleted()])
->orderByRaw("(items_count > 0) DESC, updated_at DESC")
)
->when(
$sort !== ViewOrder::UncompletedFirst->value,
fn (Builder $query): Builder =>
$query->orderByDesc("updated_at")
)
->paginate(8)
->appends([
"sort" => $sort,
]);
Anonymous function should return Illuminate\Database\Eloquent\Builder<Illuminate\Database\Eloquent\Model> but returns
Khalyomede\EloquentUuidSlug\Builder\SluggableBuilder<App\Models\ShoppingList>.
💡 Template type TModelClass on class Illuminate\Database\Eloquent\Builder is not covariant. Learn more:
https://phpstan.org/blog/whats-up-with-template-covariant