laravel model 的查询构造器 XXModel::where() 编辑器不给提示?
1、用 Users::where 不给提示,也不提示参数、无法跳转:
2、用 DB::table()->where()就有提示:
怎么才能让1和2一样?
官方文档明摆着写着:
却不给个 api 提示?
首先需要了解一下概念,明白为啥没有提示:
1.Facade里面甚至没有方法,那为什么能够可以直接通过
DB::table()
方式直接调用table方法呢?因为有注解:
可以通过注解提供代码提示能力
2.那为什么可以这样调用
DB::table()->where()
的时候就有代码提示了呢?因为
DB::table()
返回了一个实例,实例调用方法肯定会有代码提示的~除非是通过__call()
等类似魔术方法调用的方式,才不会主动有代码提示。3.那为什么
User::where()
没有代码提示,却又能调用成功呢?没有代码提示的原因已经很明显了,User类中既没有该静态方法,也没有类注解,自然不会有代码提示。
那为什么能调用成功呢?文档已经很明确的说明,每个Eloquent模型都可以充当一个查询构造器,我们也经常能看到
$model::query()
、$model->newQuery()
或者$model->newModelQuery()
的写法。既然User类中没有该静态方法,此时就应该看看User类或其祖先类中的__callStatic()
方法是否有你想要的答案。 回到Illuminate\Database\Eloquent\Model
类,有下面两个方法:最后,怎么可以有代码提示,帮助快速开发呢?
1.建议多看文档和源码,多看一点点就能多了解一点点,让自己成为代码提示者
2.
https://github.com/barryvdh/laravel-ide-helper
这是个好东西~,一键生成注解希望我的回答可以帮助你~