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']);

这么写应该很清晰了吧