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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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