Laravel API教程PUT不更新

时间:2014-08-19 05:41:22

标签: php rest laravel

我正在关注建议资源控制器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似乎非常聪明。

2 个答案:

答案 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?