字段排除功能
背景:使用过 THINKPHP 的 PHPer 都知道有字段排除功能,个人觉得有时候还是比较好用的,所以分享一下!第一次分享,如有不好之处,请大神指教
这里面主要是使用到 laravel 里面的 Macros;
1、在 app\Providers 里面新建一个 QueryMacroServiceProvider 的类
温馨提示:这里面有一个小坑,
\Illuminate\Database\Query\Builder 适合用于 DB,Illuminate\Database\Eloquent\Builder 适合用于 ORM
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\ServiceProvider;
class QueryMacroServiceProvider extends ServiceProvider
{
public function boot()
{
Builder::macro('selectNotField', function ($columns = ['*']) {
$columns = is_array($columns) ? $columns : func_get_args();
$filed = array_diff($this->model->getFillable(), $columns);
return $this->select($filed);
});
}
}
2、 config 里面的 app.php 文件,在 providers 进行注册
'providers' => [
......
App\Providers\QueryMacroServiceProvider::class,
3、使用 selectNotFiled 查询
$result = self::selectNotField('status','name')->get();
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: