laravel eloquent创建数据时可以使用$fillable属性和$guarded属性限制,但是修改的时候不起作用,网上搜索有人用array_only函数解决,请问还有什么别的方法么?
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
你指的不起作用,我猜你应该不是用的 Eloquent::save()
去创建的。我建议你在 Request 层就做用户提交数据的验证,和处理,这样Controller 里会更加清晰!
<?php
namespace App\Http\Requests\Organization\Department;
use Illuminate\Http\JsonResponse;
use Illuminate\Foundation\Http\FormRequest;
class CreateDepartmentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
if (Auth::user()->hasPermission('create_department')) {
return true;
}
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'parent_id' => 'required|numeric',
'leader' => 'numeric',
'buttman' => 'numeric',
'grade' => 'required'
];
}
/**
* Error message
* @return array
*/
public function messages()
{
return [
'name.required' => '部门名称为必填项',
'parent_id.required' => '上级部门为必填项',
'parent_id.numeric' => '上级部门 ID 必须为数字',
'leader.numeric' => '部门领导 ID 必须为数字',
'buttman.numeric' => '部门对接人 ID 必须为数字',
'grade.required' => '部门职系为必填'
];
}
/**
* Error Response
* @param array $errors
* @return JsonResponse
*/
public function response(array $errors)
{
return new JsonResponse([
'status' => 'error',
'data' => $errors
], 422);
}
}
//控制器里再获取指定的字段,到这里数据基本上就没问题了!
$input = $request->intersect(['arg1', 'arg2']);
- 1 回答
- 0 关注
- 1389 浏览
添加回答
举报
0/150
提交
取消