如果一张表中一个元素下面有多个子元素可以使用自关联模型获取同一张表中的子元素
1、模型中的方法
public function children ( )
{
return $this - > hasMany ( self: : class , "pid" , "id" ) ;
}
2、控制器查询
$model = new \ app\ admin\ model\ Menu( ) ;
$data = $model - > with ( [ 'children' ] )
- > where ( 'status' , 1 )
- > order ( 'id' , 'desc' )
- > select ( ) - > toArray ( ) ;
3、查询结果如下
array ( 6 ) {
[ 0 ] = > array ( 11 ) {
[ "id" ] = > int ( 16 )
[ "menu_name" ] = > string ( 3 ) "666"
[ "controller" ] = > string ( 0 ) ""
[ "method" ] = > string ( 5 ) "index"
[ "route" ] = > NULL
[ "pid" ] = > int ( 6 )
[ "status" ] = > int ( 1 )
[ "create_time" ] = > NULL
[ "update_time" ] = > NULL
[ "delete_time" ] = > NULL
[ "children" ] = > array ( 0 ) {
}
}
[ 1 ] = > array ( 11 ) {
[ "id" ] = > int ( 13 )
[ "menu_name" ] = > string ( 12 ) "系统管理"
[ "controller" ] = > string ( 7 ) "Manager"
[ "method" ] = > string ( 5 ) "index"
[ "route" ] = > NULL
[ "pid" ] = > int ( 0 )
[ "status" ] = > int ( 1 )
[ "create_time" ] = > NULL
[ "update_time" ] = > NULL
[ "delete_time" ] = > NULL
[ "children" ] = > array ( 0 ) {
}
}
[ 2 ] = > array ( 11 ) {
[ "id" ] = > int ( 6 )
[ "menu_name" ] = > string ( 12 ) "角色管理"
[ "controller" ] = &g