我正在构建一个输出json的api
所以我拥有2张桌子
Categories Table
id
name
nameAR
nameTR
Items table
id
category_id
nameAR
nameEN
我的json输出完全是这样的,因为android应用程序已经发布,这个API将替换静态json文件
{
"name" : *Category name*,
"nameAR" : *Category Arabic name*,
"nameTR" : *Category Turkish name*,
"items" : [
{"nameAR": *Item Arabic name*,
"nameEN": *Item English name*},
{"nameAR": *Item2 Arabic name*,
"nameEN": *Item2 English name*}
... etc
]
}
我知道我可以这样做:
$cat=Category::first();
$items=$cat->items;
获取单个变量中的每个表但我想要的是使用 Category :: all()获取所有类别,并将属于该类别的所有项目作为对象放入数组中在类别的对象中调用 items
*我确实已经配置了我的关系
Category :
public function items()
{
return $this->hasMany('Project\Item');
}
Item:
public function category()
{
return $this->belongsTo('Project\Category');
}
答案 0 :(得分:1)
要使用属于您可能使用的类别的项目获取所有类别:
$categories = Category::with('items')->get();
当以Json的形式返回集合时,你会得到你想要的东西,但你会有一些额外的列(如果你想要你需要使用select
来选择你真正需要的那些)
答案 1 :(得分:0)
使用地图功能
$categories = Categorie::all();
$categories->map(function ($cat){
$cat->items=Item::where('category_id',$cat->id)->get();
});