Laravel 5 Laravel 5:返回所有字段,但创建的和自定义的字段除外

Laravel 5 Laravel 5:返回所有字段,但创建的和自定义的字段除外,laravel-5,eloquent,laravel-eloquent,Laravel 5,Eloquent,Laravel Eloquent,我有下一个代码: $list = Prov::all(); 我需要返回除“created_at”、“updated_at”和“state”之外的所有字段 如何操作?您可以将字段名数组传递给all(),也可以覆盖模型中的all()函数,并将字段名作为$columns数组参数的默认值传递,如: /** * Get all of the models from the database. Overrided from Laravel 5.1.27 * * @param array|mixe

我有下一个代码:

$list = Prov::all();
我需要返回除“created_at”、“updated_at”和“state”之外的所有字段


如何操作?

您可以将字段名数组传递给
all()
,也可以覆盖模型中的
all()
函数,并将字段名作为$columns数组参数的默认值传递,如:

 /**
 * Get all of the models from the database. Overrided from Laravel 5.1.27
 *
 * @param  array|mixed  $columns // this is where you override instead of '*'
 * @return \Illuminate\Database\Eloquent\Collection|static[]
 */
public static function all($columns = ['id','name','description'])
{
    $columns = is_array($columns) ? $columns : func_get_args();

    $instance = new static;

    return $instance->newQuery()->get($columns);
}

解决此问题的另一种方法是在模型中创建一个作用域,并在此处使用它,如
Prov::myFields()->get()

方法
all
返回所有行及其所有属性。如果要隐藏json的某些字段,只需将它们添加到模型中受保护的
$hidden
数组中即可

protected $hidden = ["created_at", "updated_at"];
但若您想从php雄辩的模型中隐藏它们,您可以向该模型添加方法,该方法将给定的属性从该模型中取消设置。然后在每个项目上循环使用集合并激发自定义方法,或使用集合映射:

$modified_items = Prov::all()->map(function($item){
    return $item->myUnsettingMethod();
})
当然,您仍然可以进行直接查询:

$provs = DB::table('provs')->select('some_column', 'another_column as ac')->get();