【问题标题】:Laravel API Tutorial PUT Not UpdatingLaravel API 教程 PUT 未更新
【发布时间】:2014-08-21 11:45:58
【问题描述】:

我正在关注this tutorial,它建议使用资源控制器 Laravel API 设置。

在资源控制器中一切正常,我对正在发生的事情有一个公平的理解,但是当我进入更新功能时,我返回了一条成功的消息,但从未更新数据库。

这里是(来自网站的逐字):

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 似乎很聪明。

【问题讨论】:

    标签: php rest laravel


    【解决方案1】:

    我不能 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
        );
    }
    

    【讨论】:

    • 别担心,我省略了第二个问题,因为它确实与这个特定问题无关。
    • 酷,我建议的更改有什么不同吗?
    • 如果我删除if 块并硬​​编码一个要传递的字符串,比如$url->url = 'asdf',我可以让它更新得很好......但是,$url->url = Request::get('url'); 将只是空白条目。
    • 代替 Request::has() 和 Request::get(),尝试使用 Input::has() 和 Input::get()。我之前没有意识到这一点,但我通常不会将 Request 用于这些目的。
    • Input::has()get() 也可以通过控制台中的 curl 工作。我终于找到了我的问题,它涉及 Postman 中的数据编码。
    【解决方案2】:

    所以问题最终是我使用 Postman REST Chrome 扩展发送的数据格式

    即使我可以使用默认的form-data 编码将数据发送到 PUT 数据,但我必须在选项中使用x-www-form-urlencoded。我在 SO 上找到了一个很好的资源:@​​987654321@

    【讨论】:

    • 这篇无答案帖子应该是对您问题的修改。
    猜你喜欢
    • 2016-07-04
    • 2013-01-17
    • 2013-11-16
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多