【发布时间】:2019-11-25 14:52:14
【问题描述】:
所以我在关注本教程,我在第 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))
我无法直接发布此标记,因为这样我的正文将超过最大字符数。 所以请随意将其粘贴到 .html 文件中,然后在本地显示。抱歉给您带来不便...
我真的不明白为什么会收到此错误,因为我没有在我的 POST 请求中引用这些列。
Article eloquent-model 本身看起来像这样:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $fillable = [
'title', 'description', 'status'
];
}
我在 DB 端的表如下所示:
所以我真的不明白为什么这对我不起作用:(
【问题讨论】:
-
它看起来像 http 响应代码,
created为 201,您可以将其更改为任何其他 http 代码。例如:marked as deleted为 204。或者只需 200 即可。 -
第二个参数表示HTTP状态:developer.mozilla.org/en-US/docs/Web/HTTP/Status