我正在尝试让我的路线将一个新行插入到数据库中,如果成功,则以某种JSON格式返回记录(及其新的主键id)。我得到以下错误:
{
"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
}
}这是我的路线:
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将返回模型的一个实例。我已经检查了数据库,记录插入得很好。
发布于 2013-05-16 13:47:17
默认情况下,如果您要直接返回一个Eloquent模型,它会将该模型转换为它的JSON表示。这是因为每个模型上的__toString魔术方法通过使用toJson方法将模型作为JSON返回。
因此,该模型同时实现了ArrayableInterface和JsonableInterface。这意味着您可以直接在模型上调用toJson或toArray。
现在,您可以将列标记为隐藏。这意味着当模型转换成它的数组或JSON表示时,一些列将被删除(想想可公开访问的API,您不希望密码出现!)。我不能完全确定,但也许你的模型的ID被隐藏了。
最后,您需要做的就是返回实例。
return $client;它将自动转换为JSON。
发布于 2014-08-19 10:20:52
to_array()方法来自Larave3。在Larave4中使用toArray()。
发布于 2013-09-01 16:50:18
我看到类似的问题,您尝试将数据返回到jquery jtable和我
Player::orderBy($sort)->paginate($pagesize)->getCollection();
return Response::view(array('Result'=>'OK','Records'=>$player->toArray()));尝试了几个小时后,我找到了解决方案,从对象中获取集合拉取实例,然后求解
https://stackoverflow.com/questions/16578662
复制相似问题