Попытка исправить проблемы PHPStan с отношениями MorphTo и свойствами модели LaravelPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Попытка исправить проблемы PHPStan с отношениями MorphTo и свойствами модели Laravel

Сообщение Anonymous »

Недавно мы начали использовать PHPStan 1.10 на уровне 6 в проекте Laravel 10 PHP 8.2.
Он сообщает о нескольких оставшихся проблемах в следующей модели, которые я хотел бы исправить.
< pre class="lang-php Prettyprint-override">

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

class ArticlePrice extends Model
{

protected $fillable = ['cost_type_id', 'type', 'type_id', 'amount'];

/**
* @var array $with
*/
protected $with = ['types'];

/**
* @return MorphTo
*/
public function types(): MorphTo
{
return $this->morphTo('types', 'type', 'type_id');
}

/**
* @return string
*/
public function getName(): string
{
if ($this->types) {
return $this->type === Article::class ? $this->types->vdm_code : $this->types->name;
}

return '';
}
}
Для типов() MorphTo сообщает:

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

phpstan: Method App\Models\Environment\CostType\ArticlePrice::types()
return type with generic class Illuminate\Database\Eloquent\Relations\MorphTo
does not specify its types: TRelatedModel, TChildModel
Но если я изменю его на MorphTo, который отражает фактические модели, которые он мог бы вернуть в этот момент, он будет жаловаться:

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

phpstan: Method App\Models\Environment\CostType\ArticlePrice::types() should return
Illuminate\Database\Eloquent\Relations\MorphTo
but returns Illuminate\Database\Eloquent\Relations\MorphTo.
что для меня странно, поскольку мы находимся в ArticlePrice, мне это кажется бессмысленным.
Когда я делаю вместо этого.
Другая проблема заключается в том, что он не понимает содержимое $types:

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

phpstan: Access to an undefined property Illuminate\Database\Eloquent\Model::$name.
phpstan: Access to an undefined property Illuminate\Database\Eloquent\Model::$vdm_code.
Я надеялся, что исправление проблемы morphTo решит и эту проблему, поскольку vdm_code и name являются документированными свойствами их моделей. Но я боюсь, что это не сработает, поэтому может потребоваться другой способ решения проблемы.
Короче, как мне заставить PHPStan понять, как работает мое полиморфное отношение, и как мне заставить его распознавать свойства связанных с полиморфизмом моделей?

Подробнее здесь: https://stackoverflow.com/questions/778 ... l-properti
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • MorphTo и hasMany Laravel
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Отношения Laravel Nova 3 MorphTo
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Попытка ограничить запрос Eloquent отношениями со счетчиком 0
    Гость » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Гость
  • В модели памяти C++11 чтение/запись одного и того же события может быть установлена. Синхронизируется с отношениями?
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как проверить модели Django с отношениями внешнего ключа перед сохранением каких-либо записей?
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

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