ORM 查询如何排除某些字段?如只排除 content 文本,其它字段都需要。
$data = Content::where('pid',1)->get(['id','title','time', ...]);`
这么写感觉很笨,有没有直接排除 content 字段,其它字段都要查询的方法呢?
在网上就找到了这些资料,找了老半天还是没有如意的,最后还是自己写吧,先贴代码:
这个是写在 model 里面的
use Illuminate\Support\Facades\Schema; /** * 查询时去掉不必要的字段 * $filed 可以为一个字符串就是一个字段, */ public function field($filed) { $columns = Schema::getColumnListing($this->table); foreach ($columns as $key => $val) { if(is_array($filed)){ if(in_array($val , $filed)) unset($columns[$key]); }else { if($val == $filed) unset($columns[$key]); } } return $columns; }
这个里面的 $filed 可以传单个字段也可传多个字段,一个字段。如:
/***我这个是直接在控制器里面写的*/ $ActivityModel = new Activity();//这一行就不多解释了吧 $field = $ActivityModel->field('content');这个则是调用
多个字段:如
$ActivityModel = new Activity();$field = $ActivityModel->field(['content','title']);
这么写应该很清晰了吧