Методы find()
и where()
не существуют в классе Model, поэтому вызовы этих методов заканчиваются переходом к магическому методу PHP __call()
, который есть у Laravel определено. Внутри этого магического метода Laravel перенаправляет вызов метода в новый объект построителя запросов, который имеет с этими методами.
Метод класса построителя запросов 'find()
возвращает модель, а его метод where()
возвращает ссылку на себя ($ this), так что вы можете свободно связывать дополнительные вызовы методов с конструктором.
Все это может затруднить для IDE предоставление подсказок (IntelliSense), в которые входят пакеты, такие как laravel-ide-helper. Они в основном генерируют файлы, полные интерфейсов, которые ваша IDE может использовать, чтобы понять, какие магические методы и свойства существуют для различных классов, но в некоторых случаях эти сигнатуры методов все еще не соответствуют тому, что вы хотели бы знать о структуре кода.
В этом случае предложения IntelliSense, по-видимому, заполняются из блока документов для \Illuminate\Database\Eloquent\Builder::where()
:
/**
* Add a basic where clause to the query.
*
* @param string|array|\Closure $column
* @param mixed $operator
* @param mixed $value
* @param string $boolean
* @return $this
*/
public function where($column, $operator = null, $value = null, $boolean = 'and');
Вы можете видеть, что тип возвращаемого значения определен как $this
. На этом этапе некоторые IDE могут быть достаточно умными, чтобы понять смысл и предоставить предложения для экземпляра этого класса. Однако это может усложниться, если определения методов, которые анализирует ваша IDE, генерируются такими пакетами, как laravel-ide-helper. В этом случае это зависит не только от возможностей вашей IDE, но и от вывода пакета помощника.