查询数据库级别中的不同级别

时间:2017-09-02 21:15:17

标签: php sql laravel laravel-5.4

美好的一天。我试图查询我的数据库,以获得孩子的孩子。每个用户都有2个孩子。我在使用查询构建器。要求不是使用雄辩和雄辩的关系。但我正在努力。

DB::table('users') - >where('parent_id',  Auth::user() ->id) - get() ;

如果我想让这些孩子的孩子得到查询结果,我该怎么做?

2 个答案:

答案 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