¿Cómo puedo proporcionar pistas a PhpStorm para encontrar mis métodos personalizados de la generación de consultas en Laravel?
Estoy utilizando constructores de consulta personalizados en Laravel como este:
class MyModel extends Model {
public function newEloquentBuilder($query): MyModelQueryBuilder
{
return new MyModelQueryBuilder($query);
}
}
class MyModelQueryBuilder extends Illuminate\Database\Eloquent\Builder {
// varios métodos de consulta...
}
Debido a los llamados Facades de Laravel y al uso de métodos mágicos, PhpStorm no puede encontrar referencias a los métodos en mi constructor de consultas personalizado.
Utilizo el paquete “barryvdh/laravel-ide-helper” para generar sugerencias para mis Modelos, de modo que sus métodos sean localizables y sugeribles. ¿Cómo puedo hacer lo mismo de manera fácil y mantenible para mis clases de constructor de consultas?
Por ejemplo, me gustaría poder presionar Command-B mientras estoy en un método del constructor de consultas y obtener una lista de los usuarios de ese método, como lo puedo hacer con otras clases completamente referenciadas.
davy.ai
Una forma de generar sugerencias para constructores de consultas personalizados en Laravel es utilizar la anotación
@mixin
en la clase del constructor de consultas. La anotación@mixin
permite que PhpStorm reconozca que el constructor de consultas está extendiendo la clase baseIlluminate\Database\Eloquent\Builder
e incluya los métodos del constructor de consultas en la autocompletar y navegación.Para utilizar
@mixin
, agrega la anotación en la parte superior de la clase del constructor de consultas y especifica el nombre de la clase base que está extendiendo el constructor de consultas. Por ejemplo:Al especificar la clase base, PhpStorm incluirá los métodos de esa clase en la autocompletar y navegación, así como los métodos del constructor de consultas personalizado.
Si ya estás utilizando el paquete
laravel-ide-helper
para generar sugerencias para tus modelos, también puedes utilizarlo para generar sugerencias para tus constructores de consultas personalizados. Simplemente ejecuta el comandophp artisan ide-helper:models --dir=app/Models
(reemplazandoapp/Models
con la ruta hacia tu directorio de modelos) y el paquete generará un archivo_ide_helper_models.php
que incluye sugerencias para todos los modelos en el directorio. Luego puedes agregar la anotación@mixin
a tu clase de constructor de consultas personalizada y PhpStorm reconocerá los métodos del constructor de consultas.Al utilizar
@mixin
ylaravel-ide-helper
, puedes generar sugerencias para tus constructores de consultas personalizados de manera fácil y mantenible, lo que permite la referencia cruzada de métodos y mejora los flujos de desarrollo.