php json orm,php – 来自自引用表的Laravel ORM获得N级层次结构JSON

我正在使用带有

MySQL后端的LARAVEL 4.

我有一个自引用表,其中包含列id,名称,类型和父级.

这里,parent是列Id的外键.表中的数据如下:

id name type parent

1 General group NULL

2 What is..? question 1

3 aa answer 2

4 bb answer 2

5 cc answer 2

6 How is..? question 1

7 ba answer 6

8 bb answer 6

9 Where is..? question 4

10 ca answer 9

11 cb answer 9

12 Who is..? question 6

13 da answer 12

14 db answer 12

15 Specific group NULL

16 When is..? question 15

17 ea answer 16

18 eb answer 16

19 Whome is..? question 2

20 fa answer 19

21 fb answer 19

22 fc answer 19

我想要一个使用此关系数据返回嵌套JSON的函数.例如 :

[{

"id" : 1,

"name" : "Geneal",

"type" : "group",

"children" : [{

"id" : 2,

"name" : "What is..?",

"type" : "question",

"children" : [{

"id" : 3,

"name" : "aa",

"type" : "answer"

},

{

"id" : 4,

"name" : "bb",

"type" : "answer"

},

{

"id" : 5,

"name" : "cc",

"type" : "answer"

}]},

{

"id" : 6,

"name" : "How is..?",

"type" : "question",

"children" : [{

"id" : 7,

"name" : "ba",

"type" : "answer"

},

{

"id" : 8,

"name" : "bb",

"type" : "answer"

}]

}]

... and so on

}]

我创建了一个名为Survey的模型,如下所示:

class Survey extends BaseModel{

protected $table = 'questions';

protected $softDelete = false;

public function parent()

{

return $this->belongsTo('Survey', 'parent');

}

public function children()

{

return $this->hasMany('Survey', 'parent');

}

}

并在控制器中调用它:

$user = Survey::all();

$parent = $user->parent()->first();

$children = $user->children()->get();

但是我没有得到正如我在JSON上面提到的那样正确的结果.

print_r($parent->toJson());

只给出一级层次结构的记录(即组和问题,而不是答案).

print_r($children ->toJson());

只提出问题(不是小组和答案).

我希望嵌套的JSON格式的整个自引用数据具有N级层次结构.

我也试过了

$user = Survey::with('parent', 'children')->get();

但发现与上面的$parent相同.

无论如何我能得到理想的结果吗?

提前致谢..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值