Laravel intelephense продолжает говорить, что метод не определен в модели, когда на самом деле это так?

#laravel #eloquent

#laravel #красноречивый

Вопрос:

Итак, я использую эту строку для создания сообщений и привязки их к пользователю

 // PostController
Auth::user()->posts()->create($inputs);
  

Проблема в том, что intelephense продолжает говорить мне, что posts() метод не существует в пользовательской модели, но я его определил

 // User model
public function posts()
{
    return $this->hasMany(Post::class);
}
  

Команда работает нормально, но это может вызвать у меня некоторые проблемы в будущем, поэтому я хотел бы знать, что я что-то делаю неправильно или это интеллектуальная защита?

Ответ №1:

Intellephense — это не функция или пакет Laravel, это языковой сервер для PHP, который автоматически устанавливается вместе с его расширением в вашем редакторе или IDE

Анализатор не имеет возможности узнать о фасадах Laravel, fluent и magic методах

Итак, что вы можете сделать, это сгенерировать для него эти ссылки, используя barryvdh / laravel-ide-helper

  • Установите пакет в качестве требования к разработке
 composer require --dev barryvdh/laravel-ide-helper
  
  • Автоматическая генерация PHPDoc для фасадов Laravel
 php artisan ide-helper:generate
  
  • Автоматические PHPDocs для моделей
 php artisan ide-helper:models "AppModelsUser"