我正在关注建议资源控制器Laravel API设置的this tutorial。
在资源控制器中一切运行良好,我对发生的事情有一个公平的理解,但是当我进入更新功能时,我返回一条成功的消息,但从不更新数据库。
这是(逐字逐句):
public function update($id)
{
$url = Url::where('user_id', Auth::user()->id)->find($id);
if ( Request::get('url') )
{
$url->url = Request::get('url');
}
if ( Request::get('description') )
{
$url->description = Request::get('description');
}
$url->save();
return Response::json(array(
'error' => false,
'message' => 'url updated'),
// or 'message' => $url),
200
);
}
从快速浏览一下,你能看出为什么它只是返回数据库中已有的内容吗?它甚至不想改变“updated_at”时间戳,Laravel似乎非常聪明。
答案 0 :(得分:2)
我不是100%肯定,但似乎您的代码存在一些问题。我会做一些改变。
public function update($id)
{
$url = Url::find($id);
//Alternatively something like
/*$url = URL::whereUserId(Auth::user()->id)->whereId($id)->first();*/
if ( Request::has('url') )
{
$url->url = Request::get('url');
}
if ( Request::has('description') )
{
$url->description = Request::get('description');
}
$url->save();
return Response::json(array(
'error' => false,
'message' => 'url updated'),
),
200
);
}
答案 1 :(得分:1)
因此问题最终成为我发送的数据格式与Postman REST Chrome扩展程序。
即使我可以使用默认的form-data
编码来释放POST数据,但是对于PUT数据,我必须在选项中使用x-www-form-urlencoded
。我在SO上找到了很好的资源:application/x-www-form-urlencoded or multipart/form-data?