我是Laravel和Eloquent的新手,我需要从父ID中获取所有子ID。
这些是我的样本数据:
ID Entity Name Amount Parent ID Data Level Currency<br>
1 Great Grandpa_1 0 0 1 php<br>
2 Great Grandpa_2 10000 0 1 php<br>
3 Great Grandpa_3 20000 0 1 php<br>
4 Grandpa_1 5000 1 2 php<br>
5 Grandpa_2 6000 1 2 php<br>
6 Grandpa_3 7000 1 2 php<br>
7 Grandpa_4 1000 2 2 php<br>
8 Grandpa_5 2000 2 2 php<br>
9 Grandpa_6 3000 2 2 php<br>
10 Grandpa_7 0 3 2 php<br>
11 Dad_1 1500 4 3 php<br>
12 Dad_2 2500 4 3 php<br>
13 Dad_3 3500 4 3 php<br>
这是我在MySQL中的脚本:
select group_concat(lv separator ',') as children from
(select @pv := (select group_concat(id separator ',') from
tbljournalentry where parent_id in (@pv)) as lv from
tbljournalentry join (select @pv := {$id})tmp where parent_id in (@pv))a;
这是我可以去的地方:
$result = DB::table('tbl_journalentry')->where('parentid', $id)->get();
我只能得到直接的孩子。我需要得到所有孩子的身份证。 我希望你能向我解释我需要做些什么。感谢。
答案 0 :(得分:0)
使用pluck()
$result = DB::table('tbl_journalentry')->where('parentid', $id)->pluck('id');
答案 1 :(得分:0)
如果您需要从大颗粒到儿童的所有数据。
首先你需要找到所有祖父母的身份证。
$greatgrandpa = DB::table('tbl_journalentry')->where('parentid', 0)->pluck('id');
它将返回伟大爷爷的所有ID。现在循环遍历它以获得爷爷的所有ID。
$grandpa = DB::table('tbl_journalentry')->whereIn('parentid', $arrayofgreatgrandpaIDs)->pluck('id');
你将获得所有爷爷身份证。现在再次使用爷爷的ID找到爸爸。
$dad = DB::table('tbl_journalentry')->whereIn('parentid', $arrayofgrandpaIDs)->pluck('id');
通过这个你可以获取所有级别的孩子。
答案 2 :(得分:0)
你应该试试这个:
我认为您的模型名称为journalentry
,并在journalentry
模型中添加以下代码
在模型中
public function children() {
return $this->hasMany('App\journalentry','parentid','id');
}
在控制器中
use App\journalentry;//Model name
$result = journalentry::find($id);
print_r($result->childs);
foreach ($result->childs as $data) {
print_r("*******sub child***** <br>");
print_r($data->childs);
}