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();