//根据条件查询
public function getByCond( $param ) {
  $default = [
    'field'  => ['*' ],
    'pid'    => 0,
    'status' => '',
    'key'    => 'children'
  ];
  $param  = extend( $default , $param );

   $data = $this->getModel()->status($param['status'])->orderBy('level' , 'ASC')->orderBy('sort' , 'ASC')->get($param['field'])->toArray();

  $result = [ ];
  $index  = [ ];

  foreach ( $data as $row ) {
    if ( $row['pid'] == $param['pid'] ) {
      $result[ $row['id'] ] = $row;
      $index[ $row['id'] ]  = &$result[ $row['id'] ];
    } else {
      $index[ $row['pid'] ][ $param['key'] ][ $row['id'] ] = $row;
      $index[ $row['id'] ] = &$index[ $row['pid'] ][ $param['key'] ][ $row['id'] ];
    }
  }

  return $this->treeToArray( $result, $param['key'] );
}
