美好的一天。我试图查询我的数据库,以获得孩子的孩子。每个用户都有2个孩子。我在使用查询构建器。要求不是使用雄辩和雄辩的关系。但我正在努力。
DB::table('users') - >where('parent_id', Auth::user() ->id) - get() ;
如果我想让这些孩子的孩子得到查询结果,我该怎么做?
答案 0 :(得分:1)
我认为你的情景是这样的 -
数据库架构 -
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`parent_by` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
INSERT INTO `user` (`id`, `parent_id`, `parent_by`) VALUES
(1, 1, 2),(2, 1, 3), (3, 2, 4), (4, 2, 5),(5, 3, 6),(6, 3, 7),
(7, 4, 8), (8, 4, 9)(9, 5, 10), (10, 5, 11);
原始查询以获得祖父母,父母,子女和孩子的孩子 -
SELECT a.`parent_id` AS grandparent, a.`parent_by` AS parent, b.`parent_by` AS child, c.`parent_by` AS child_child
FROM `user` AS a
LEFT JOIN `user` AS b ON b.`parent_id` = a.`parent_by`
LEFT JOIN `user` AS c ON c.`parent_id` = b.`parent_by`
WHERE a.`parent_id` =1
LIMIT 0 , 30;
希望这会对你有所帮助。
答案 1 :(得分:1)
通过加入,它将被编译,使用循环:
$Childs= DB::table('users')->where('parent_id', Auth::user()->id)->get() ;
foreach ($users as $usr){
$users['sub_childs'] = DB::table('users')->where('parent_id', $usr->id)->get() ;
}
对于递归关系,请使用:https://github.com/etrepat/baum