code: function fetchPairs($key, $value = ''){
          $return = array();
          $clone  = clone $this;
          if($value != ""){
              $clone->select = array();
              $clone->select("$key, $value"); // MultiResult adds its column
          }elseif($clone->select){
              array_unshift($clone->select, $key);
          }else{
              $clone->select = array("$key, $this->table.*");
          }
          foreach($clone as $row){
              //$values = array_values(iterator_to_array($row));
              //bugfixed: Argument 1 passed to iterator_to_array() must implement interface Traversable, array given
              //@Scott @dogstar 20151122
              /** @var Traversable|array $row */
              $values = ($row instanceof Traversable) ? array_values(iterator_to_array($row)) : array_values($row);
              if($value != "" && $clone instanceof NotORM_MultiResult){
                  array_shift($values);
              }
              $return[(string) $values[0]] = ($value != "" ? $values[(array_key_exists(1, $values) ? 1 : 0)]
                  : $row); // isset($values[1]) - fetchPairs("id", "id")
          }
          return $return;
      }
docs: Fetch all rows as associative array
  
  @param string $key
  @param string $value column name used for an array value or an empty string for the whole row
  
  @return array