Laravel 6控制器存储已登录用户ID出现array_map错误如何解决
你出错的核心原因是validate()方法的入参要求是「字段名 => 验证规则」的映射数组,你把要自定义赋值的id字段写在了验证规则数组里,导致Laravel验证器解析规则时类型不匹配抛出错误。
正确实现代码
public function store(Request $request) { if (!auth()->check()) { abort(403, 'Only authenticated users can create new posts.'); } // 仅验证前端提交的业务字段,自定义赋值字段不要写到验证规则里 $data = $request->validate([ 'content' => 'required', 'topic' => 'required', 'hashtag' => 'required' ]); // 验证通过后手动合并登录用户ID到待写入数据 $data['id'] = Auth::id(); Tweets::create($data); return Redirect::to("form")->withSuccess('Great! Form successfully submit with validation.'); }
注意事项
- 请先确认
Tweets模型的$fillable属性中已添加id字段,否则Laravel的批量赋值机制会过滤掉该字段 - 如果你的表中
id是自增主键,你实际要存的是关联的用户ID,大概率是字段名写错了,应该把关联字段设为user_id,对应合并代码改为$data['user_id'] = Auth::id();即可。
内容的提问来源于stack exchange,提问作者Kostandin Vllahu
相关产品推荐
相关产品推荐

