Type error: Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, null given
Type error: Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, null given
我正在尝试 post laravel 中的标题和文章 api 我收到此错误
Type error: Argument 1 passed to
Illuminate\Database\Eloquent\Builder::create() must be of the type
array, null given, called in
C:\xampp\htdocs\LaravelProject\cpapi\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php
on line 1440
这是我的 route/api.php 文件post 文章数据
Route::post('articles', 'ArticleController@store');
Route::post('articles', function(Request $request) {
return Article::create($request->all);
});
以及ArticleController.php文件的这个存储函数
public function store(Request $request)
{
$article = Article::create($request->all());
return response()->json($article, 201);
}
这是文章模型class
class Article extends Model
{
//new
protected $fillable = ['title', 'body'];
}
我尝试在 articlecontroller 文件中更改它,但出现相同的错误
$article = Article::create($request->only([
'title',
'body']));
我该如何解决这个问题?
按照#Masivuye_Cokile的建议,我修改了路由和控制器函数中的代码,它解决了我的问题。
Route/api.php
Route::post('articles', function(Request $request) {
$data = $request->all();
return Article::create([
'title' => $data['title'],
'body' => $data['body'],
]);
});
在控制器函数中
public function store(Request $request)
{
$article = Article::save();
return response()->json($article, 201);
}
我知道已经有一个可接受的答案,但我认为没有清楚地解释错误的原因。
如果您查看下面的代码,您会发现您键入的第二个路由定义存在错误; $request->all
而不是 $request->all()
Route::post('articles', 'ArticleController@store');
Route::post('articles', function(Request $request) {
return Article::create($request->all);
});
所以,我认为更简单的解决方案是:
Route::post('articles', 'ArticleController@store');
Route::post('articles', function(Request $request) {
return Article::create($request->all());
});
我正在尝试 post laravel 中的标题和文章 api 我收到此错误
Type error: Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, null given, called in C:\xampp\htdocs\LaravelProject\cpapi\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1440
这是我的 route/api.php 文件post 文章数据
Route::post('articles', 'ArticleController@store');
Route::post('articles', function(Request $request) {
return Article::create($request->all);
});
以及ArticleController.php文件的这个存储函数
public function store(Request $request)
{
$article = Article::create($request->all());
return response()->json($article, 201);
}
这是文章模型class
class Article extends Model
{
//new
protected $fillable = ['title', 'body'];
}
我尝试在 articlecontroller 文件中更改它,但出现相同的错误
$article = Article::create($request->only([
'title',
'body']));
我该如何解决这个问题?
按照#Masivuye_Cokile的建议,我修改了路由和控制器函数中的代码,它解决了我的问题。
Route/api.php
Route::post('articles', function(Request $request) {
$data = $request->all();
return Article::create([
'title' => $data['title'],
'body' => $data['body'],
]);
});
在控制器函数中
public function store(Request $request)
{
$article = Article::save();
return response()->json($article, 201);
}
我知道已经有一个可接受的答案,但我认为没有清楚地解释错误的原因。
如果您查看下面的代码,您会发现您键入的第二个路由定义存在错误; $request->all
而不是 $request->all()
Route::post('articles', 'ArticleController@store');
Route::post('articles', function(Request $request) {
return Article::create($request->all);
});
所以,我认为更简单的解决方案是:
Route::post('articles', 'ArticleController@store');
Route::post('articles', function(Request $request) {
return Article::create($request->all());
});