首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Laravel-4雄辩查询结果转换为数组

将Laravel-4雄辩查询结果转换为数组
EN

Stack Overflow用户
提问于 2013-05-16 11:46:14
回答 3查看 20.4K关注 0票数 4

我正在尝试让我的路线将一个新行插入到数据库中,如果成功,则以某种JSON格式返回记录(及其新的主键id)。我得到以下错误:

代码语言:javascript
复制
{
    "error":
    {
        "type":"BadMethodCallException",
        "message":"Call to undefined method Illuminate\\Database\\Query\\Builder::to_array()",
        "file":"\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Query\\Builder.php",
        "line":1418
    }

}

这是我的路线:

代码语言:javascript
复制
Route::post('/client/create', function()
{
    $client = Client::create(Input::all());
    if($client)
    {
        return json_encode(array('Result' => 'OK', 'Record' => $client->to_array()));
    }
    else
    {
        return json_encode(array('Result' => 'ERROR', 'Message' => 'Error Inserting Record =('));
    }
});

根据我读过的Laravel文档,您应该使用->to_array()将模型转换为数组,如果成功插入,::create将返回模型的一个实例。我已经检查了数据库,记录插入得很好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-16 13:47:17

默认情况下,如果您要直接返回一个Eloquent模型,它会将该模型转换为它的JSON表示。这是因为每个模型上的__toString魔术方法通过使用toJson方法将模型作为JSON返回。

因此,该模型同时实现了ArrayableInterfaceJsonableInterface。这意味着您可以直接在模型上调用toJsontoArray

现在,您可以将列标记为隐藏。这意味着当模型转换成它的数组或JSON表示时,一些列将被删除(想想可公开访问的API,您不希望密码出现!)。我不能完全确定,但也许你的模型的ID被隐藏了。

最后,您需要做的就是返回实例。

代码语言:javascript
复制
return $client;

它将自动转换为JSON。

票数 9
EN

Stack Overflow用户

发布于 2014-08-19 10:20:52

to_array()方法来自Larave3。在Larave4中使用toArray()

票数 3
EN

Stack Overflow用户

发布于 2013-09-01 16:50:18

我看到类似的问题,您尝试将数据返回到jquery jtable和我

代码语言:javascript
复制
Player::orderBy($sort)->paginate($pagesize)->getCollection();
return Response::view(array('Result'=>'OK','Records'=>$player->toArray()));

尝试了几个小时后,我找到了解决方案,从对象中获取集合拉取实例,然后求解

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16578662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档