我刚刚开始介绍一些关于Laravel的教程,我对这段代码遇到了一些麻烦:
public function store(Request $request )
{
$product = $this->validate(request(), [
'name' => 'required',
'price' => 'required|numeric'
]);
Product::create($product);
return back()->with('success', 'Product has been added');
}
参数1传递给Illuminate \ Database \ Eloquent \ Builder :: create() 必须是类型数组,null给定,调用 C:\〜\ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Model.php on 第1374行并定义
我不知道我做错了什么,我正在逐步学习本教程
答案 0 :(得分:0)
您正在将null传递给create()
方法,因为您未在此处获取请求对象
public function store(Request $request )
{
$this->validate($request, [
'name' => 'required',
'price' => 'required|numeric'
]);
Product::create($request->all());
return back()->with('success', 'Product has been added');
}
<强>替代强>
我建议您Laravel 5.4
的方式就像这样
public function store(Request $request )
{
$validator = Validator::make( $request->all(), [
'name' => 'required',
'price' => 'required|numeric'
] );
if ( $validator->fails() ) {
//error handling
}
Product::create($product);
return back()->with('success', 'Product has been added');
}
适用于Laravel 5.5
正如在聊天中所提到的,你正在寻找将Laravel更新为5.5 for Laravel 5.5这是一个稳定版本,我找到了一篇很好的文章here,我在几个月前读过,他们已经描述了一个laravel验证。体面的方式,它将帮助您了解更多。
答案 1 :(得分:0)
首先使用$product->fails()
检查您的验证结果:
然后使用Product::create($request>all())
:
在命名空间部分use Validator;
然后:
$product = Validator::make($request->all(),[
'name' => 'required',
'price' => 'required|numeric'
]);
if (!$product->fails()){
Product::create(request()->all());
};
祝你好运。