2015-08-24 101 views
0

我建立输出JSON雄辩加入2个表

这样一个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 : 
    public function items() 
     { 
      return $this->hasMany('Project\Item'); 
     } 
类别
Item: 
    public function category() 
     { 
      return $this->belongsTo('Project\Category'); 
     } 
+1

问题是什么?你有什么尝试? –

+0

我设法加入每个项目的类别手动,但我只是不知道如何自动执行 – AlhasanIQ

回答

1

要获得项目属于这些类别的所有类别,你可以使用:

$categories = Category::with('items')->get(); 

当返回集合为JSON你会得到你想要的东西,但你会有一些额外的列(如果你想要你需要使用select来选择你真正需要的那些)

+0

我刚刚发现这一点,但我得到一个空数组。 虽然我很确定我的关系是好的 – AlhasanIQ

+0

@AlhasanIQ确保您的类别有效的项目。例如,对于id = 1的类别,您确定您有任何具有'category_id = 1'的项目吗? –

+0

我发现这个问题,在我的查询中,我选择了类别 的特定列** select('name','nameAR','nameTR')** 如果我将id列添加到所选列查询将工作 但我不添加它。我有什么选择 – AlhasanIQ