PHPStan жалуется на @var Builder в области Laravel EloquentPhp

Кемеровские программисты php общаются здесь
Anonymous
PHPStan жалуется на @var Builder в области Laravel Eloquent

Сообщение Anonymous »

Я пытаюсь определить модель Laravel Eloquent с настраиваемой областью действия, которая фильтрует категории по идентификатору поставщика соответствующего продукта. Вот моя установка:

Код: Выделить всё

class Category extends Model
{
public function productTemplates(): HasMany
{
return $this->hasMany(ProductTemplate::class, 'category_id');
}

#[Scope]
protected function byVendor(Builder $query, ?int $vendorId = null): void
{
$query->whereHas('productTemplates', function (Builder $productQuery): void {
/** @var Builder
 $productQuery */
$productQuery->byVendor($vendorId);
});
}
}

Код: Выделить всё

class ProductTemplate extends Model
{
#[Scope]
protected function byVendor(Builder $query, ?int $vendorId = null): void
{
if ($vendorId) {
$query->where('vendor_id', $vendorId);
}
}
}
Когда я запускаю PHPStan, я получаю следующую ошибку:

Код: Выделить всё

PHPDoc tag @var with type Illuminate\Database\Eloquent\Builder
is not subtype of native type Illuminate\Database\Eloquent\Builder.
Как я могу исправить PHPDoc или подсказку типа, чтобы PHPStan правильно распознавал тип $productQuery в области видимости?

Подробнее здесь: https://stackoverflow.com/questions/798 ... uent-scope

Вернуться в «Php»