因此,我在学习本教程后,是在第27分钟https://www.youtube.com/watch?v=6Oxfb_HNY0U 在那里,控制器的代码如下:
<?php
namespace App\Http\Controllers;
use App\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
//
public function showAllArticles(){
return response()->json(Article::get(['title', 'description', 'status'])); // ::get([]) spezifiziert die zu referenzierenden Attribute
// ::all() referenziert alle Attribute einer Tabelle/Relation
}
public function showOneArticle($id){
return response()->json(Article::find($id));
}
public function create(Request $request){
//dd($request); //for debugging whether the request is actually being processed
$this->validate($request, [
'title' => 'required',
'description' => 'required'
]);
//dd($request); //for debugging whether the specified fields are required
//insert record
$article = Article::create($request->all());
return response()->json($article, 201);
}
}
现在我很困惑的是以下行中的json()参数:
return response()->json($article, 201);
我在laravel或lumen文档的第二个选项中找不到任何东西。 到目前为止,我也无法通过此参数检测到任何影响。它仅出现在教程的Restlet Client的日志中,请参见屏幕截图。是港口吗??? 它确实出现在教程人员的HTTPS请求的历史记录日志中: https://imgur.com/To0Y6cJ
当我有以下几行时:
$this->validate($request, [
'title' => 'required',
'description' => 'required'
]);
未发表评论,那么我总是得到以下答复: https://imgur.com/wTtZNrz
{
"title": "The title field is required",
"description": "The description field is required"
}
当我评论这些行时,就会出现此错误: https://textuploader.com/1oq3n
SQLSTATE [42S22]:找不到列:1054'字段列表'中的未知列'created_at'(SQL:插入
articles
(updated_at
,created_at
)值(2019- 11-25 14:18:33,2019-11-25 14:18:33))
我无法直接发布此标记,因为这样我的身体将超过最大字符数。 因此,随时将其粘贴到an.html文件中,然后在本地显示。抱歉给您带来不便...
我真的不明白为什么会收到此错误,因为我没有在POST请求中引用这些列。
Article雄辩模型本身如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $fillable = [
'title', 'description', 'status'
];
}
我在数据库端的表如下所示:
所以我真的看不出为什么这对我不起作用:(
答案 0 :(得分:1)
这里有多个问题。
created-at
的拼写错误应为created_at
:SQLSTATE [42S22]:找不到列:1054'字段列表'中的未知列'created_at'(SQL:插入
articles
(updated_at
,created_at
)值(2019- 11-25 14:18:33,2019-11-25 14:18:33))
尝试使用这种方法:
$validatedData = $request->validate([
'title' => 'required',
'description' => 'required',
]);
Content-Type
标题并将其设置为application/json
curl ... -H "Content-Type: application/json"
->json($data, 201)
就像其他人建议的standard中所述的HTTP响应代码一样。