我得到所有的水果'在像这样的Laravel 5.5控制器......
$fruits = Fruit::all();
return Response::json(array(
'error' => false,
'fruits' => $fruits,
));
这是有效的,但是有一种方法可以准确指定出来的数据,就像你只查询一个这样的项目...
$fruit = Fruit::find($id);
$fruit_array = array();
$fruit_array['id'] = $fruit->id;
$fruit_array['title'] = $fruit->title;
$fruit_array['colour'] = $fruit->colour;
return Response::json(array(
'error' => false,
'fruits' => $fruits,
));
任何人都有我能看到的例子吗?
答案 0 :(得分:2)
您可以像这样使用Query Builder
:
$result = DB::table('fruits')
->select('id', 'title', 'colour')
->where('id', $id)
->get();
答案 1 :(得分:2)
您可以使用Laravel Resources。基本上,您创建了一个扩展Resource
类的类,只需调用toArray($request)
。
因此,您可以创建一个类似于以下内容的FruitResource.php
类:
class FruitResource extends \Illuminate\Http\Resources\Json\Resource
{
public function toArray($request)
{
return [
'id' => $this-id,
'title' => $this->title,
'colour' => $this->colour,
// anything you want, including more resources or relationships to fruits
'user' => $this->user
];
}
}
然后你像这样呼叫FruitResource.php
:
return Response::json(array(
'error' => false,
'fruits' => FruitResource::collection($fruits),
));
我喜欢这种方式的原因是,当您需要在响应中进行大量自定义时,您可以在新资源中很好地组织它们。
答案 2 :(得分:1)
您可以在模型中使用$visible
protected属性。 $visible
是一个数组,用于保存您希望在JSON输出中显示的键/值对。
或者,您可以使用visible属性来定义白名单 属性应该包含在模型的数组和JSON中 表示。模型出现时,将隐藏所有其他属性 转换为数组或JSON。
所以在你的模型中为类添加一个属性:
protected $visible = [
'id' => $this->id,
'title' => $this->title,
'colour' => $this->colour,
];
此外,如果您想添加列中不存在的更多信息,可以使用$appends
。 Appends Docs
如果您有一个名为getIsFancyAttribute()
的访问者,则可以使用:
protected $appends = [ 'is_fancy' => $this->is_fancy '];
答案 3 :(得分:1)
您可以在pass
方法中find()
其他属性数组来指定您想要column
的{{1}}数据:
fetch