original_string: public static function selectByIds($ids, array $options = [], array $criteria = [])
      {
          $criteria = static::cleanCriteria($criteria);
          if (empty($criteria)) {
              $criteria['select'] = ['*'];
          }
  
          if (is_array($ids)) {
              $ids = implode(',', $ids);
          }
  
          $pk = static::getPrimaryKeyStatic();
          if (!empty($ids)) {
              $idsPhrase = " $pk IN ($ids) ";
  
              $condition = array_get($criteria, 'condition');
  
              if (!empty($condition)) {
                  $condition .= ' AND ' . $idsPhrase;
              } else {
                  $condition = $idsPhrase;
              }
  
              $criteria['condition'] = $condition;
          }
  
          $data = static::selectByRequest($criteria, $options);
  
          $data = static::cleanResult($data, array_get($criteria, 'select'));
          if (!is_array($ids)) {
              $ids = explode(',', $ids);
          }
          if (count($data) != count($ids)) {
              $out = [];
              $continue = array_get_bool($options, ApiOptions::CONTINUES);
              foreach ($ids as $index => $id) {
                  $found = false;
                  foreach ($data as $record) {
                      if ($id == array_get($record, $pk)) {
                          $out[$index] = $record;
                          $found = true;
                          break;
                      }
                  }
                  if (!$found) {
                      $out[$index] = new NotFoundException("Record with identifier '$id' not found.");
                      if (!$continue) {
                          break;
                      }
                  }
              }
  
              throw new BatchException($out, 'Batch Error: Not all requested records could be retrieved.');
          }
  
          return $data;
      }
code: public static function selectByIds($ids, array $options = [], array $criteria = [])
      {
          $criteria = static::cleanCriteria($criteria);
          if (empty($criteria)) {
              $criteria['select'] = ['*'];
          }
  
          if (is_array($ids)) {
              $ids = implode(',', $ids);
          }
  
          $pk = static::getPrimaryKeyStatic();
          if (!empty($ids)) {
              $idsPhrase = " $pk IN ($ids) ";
  
              $condition = array_get($criteria, 'condition');
  
              if (!empty($condition)) {
                  $condition .= ' AND ' . $idsPhrase;
              } else {
                  $condition = $idsPhrase;
              }
  
              $criteria['condition'] = $condition;
          }
  
          $data = static::selectByRequest($criteria, $options);
  
          $data = static::cleanResult($data, array_get($criteria, 'select'));
          if (!is_array($ids)) {
              $ids = explode(',', $ids);
          }
          if (count($data) != count($ids)) {
              $out = [];
              $continue = array_get_bool($options, ApiOptions::CONTINUES);
              foreach ($ids as $index => $id) {
                  $found = false;
                  foreach ($data as $record) {
                      if ($id == array_get($record, $pk)) {
                          $out[$index] = $record;
                          $found = true;
                          break;
                      }
                  }
                  if (!$found) {
                      $out[$index] = new NotFoundException("Record with identifier '$id' not found.");
                      if (!$continue) {
                          break;
                      }
                  }
              }
  
              throw new BatchException($out, 'Batch Error: Not all requested records could be retrieved.');
          }
  
          return $data;
      }
code_tokens: public static function selectByIds ( $ ids , array $ options = [ ] , array $ criteria = [ ] ) { $ criteria = static :: cleanCriteria ( $ criteria ) ; if ( empty ( $ criteria ) ) { $ criteria [ 'select' ] = [ '*' ] ; } if ( is_array ( $ ids ) ) { $ ids = implode ( ',' , $ ids ) ; } $ pk = static :: getPrimaryKeyStatic ( ) ; if ( ! empty ( $ ids ) ) { $ idsPhrase = " $pk IN ($ids) " ; $ condition = array_get ( $ criteria , 'condition' ) ; if ( ! empty ( $ condition ) ) { $ condition .= ' AND ' . $ idsPhrase ; } else { $ condition = $ idsPhrase ; } $ criteria [ 'condition' ] = $ condition ; } $ data = static :: selectByRequest ( $ criteria , $ options ) ; $ data = static :: cleanResult ( $ data , array_get ( $ criteria , 'select' ) ) ; if ( ! is_array ( $ ids ) ) { $ ids = explode ( ',' , $ ids ) ; } if ( count ( $ data ) != count ( $ ids ) ) { $ out = [ ] ; $ continue = array_get_bool ( $ options , ApiOptions :: CONTINUES ) ; foreach ( $ ids as $ index => $ id ) { $ found = false ; foreach ( $ data as $ record ) { if ( $ id == array_get ( $ record , $ pk ) ) { $ out [ $ index ] = $ record ; $ found = true ; break ; } } if ( ! $ found ) { $ out [ $ index ] = new NotFoundException ( "Record with identifier '$id' not found." ) ; if ( ! $ continue ) { break ; } } } throw new BatchException ( $ out , 'Batch Error: Not all requested records could be retrieved.' ) ; } return $ data ; }
docstring: Selects records by multiple ids.
  
  @param string|array $ids
  @param array        $options
  @param array        $criteria
  
  @return mixed
  @throws BatchException
docstring_tokens: Selects records by multiple ids .