function execute() {

        if ( isset( $this->rows ) ) return $this;

        if ( $this->parent_ ) {

            // restrict to parent
            $this->where[] = $this->db->is( $this->key, $this->parent_->getGlobalKeys( $this->parentKey ) );

        }

        $root = $this->getRoot();
        $definition = $this->getDefinition();

        $cached = $root->getCache( $definition );

        if ( !$cached ) {

            // fetch all rows
            $statement = $this->db->select( $this->table, array(
                'expr' => $this->select,
                'where' => $this->where,
                'orderBy' => $this->orderBy,
                'limitCount' => $this->limitCount,
                'limitOffset' => $this->limitOffset,
                'params' => $this->whereParams
            ) );

            $rows = $statement->fetchAll();
            $cached = array();

            // build row objects
            foreach ( $rows as $row ) {

                $row = $this->createRow( $row );
                $row->setClean();

                $cached[] = $row;

            }

            $root->setCache( $definition, $cached );

        }

        $this->globalRows = $cached;

        if ( !$this->parent_ ) {

            $this->rows = $cached;

        } else {

            $this->rows = array();
            $keys = $this->parent_->getLocalKeys( $this->parentKey );

            foreach ( $cached as $row ) {

                if ( in_array( $row->__get( $this->key ), $keys ) ) {

                    $this->rows[] = $row;

                }

            }

        }

        return $this;

    }
function execute() {

        if ( isset( $this->rows ) ) return $this;

        if ( $this->parent_ ) {

            // restrict to parent
            $this->where[] = $this->db->is( $this->key, $this->parent_->getGlobalKeys( $this->parentKey ) );

        }

        $root = $this->getRoot();
        $definition = $this->getDefinition();

        $cached = $root->getCache( $definition );

        if ( !$cached ) {

            // fetch all rows
            $statement = $this->db->select( $this->table, array(
                'expr' => $this->select,
                'where' => $this->where,
                'orderBy' => $this->orderBy,
                'limitCount' => $this->limitCount,
                'limitOffset' => $this->limitOffset,
                'params' => $this->whereParams
            ) );

            $rows = $statement->fetchAll();
            $cached = array();

            // build row objects
            foreach ( $rows as $row ) {

                $row = $this->createRow( $row );
                $row->setClean();

                $cached[] = $row;

            }

            $root->setCache( $definition, $cached );

        }

        $this->globalRows = $cached;

        if ( !$this->parent_ ) {

            $this->rows = $cached;

        } else {

            $this->rows = array();
            $keys = $this->parent_->getLocalKeys( $this->parentKey );

            foreach ( $cached as $row ) {

                if ( in_array( $row->__get( $this->key ), $keys ) ) {

                    $this->rows[] = $row;

                }

            }

        }

        return $this;

    }
function execute ( ) { if ( isset ( $ this -> rows ) ) return $ this ; if ( $ this -> parent_ ) { // restrict to parent $ this -> where [ ] = $ this -> db -> is ( $ this -> key , $ this -> parent_ -> getGlobalKeys ( $ this -> parentKey ) ) ; } $ root = $ this -> getRoot ( ) ; $ definition = $ this -> getDefinition ( ) ; $ cached = $ root -> getCache ( $ definition ) ; if ( ! $ cached ) { // fetch all rows $ statement = $ this -> db -> select ( $ this -> table , array ( 'expr' => $ this -> select , 'where' => $ this -> where , 'orderBy' => $ this -> orderBy , 'limitCount' => $ this -> limitCount , 'limitOffset' => $ this -> limitOffset , 'params' => $ this -> whereParams ) ) ; $ rows = $ statement -> fetchAll ( ) ; $ cached = array ( ) ; // build row objects foreach ( $ rows as $ row ) { $ row = $ this -> createRow ( $ row ) ; $ row -> setClean ( ) ; $ cached [ ] = $ row ; } $ root -> setCache ( $ definition , $ cached ) ; } $ this -> globalRows = $ cached ; if ( ! $ this -> parent_ ) { $ this -> rows = $ cached ; } else { $ this -> rows = array ( ) ; $ keys = $ this -> parent_ -> getLocalKeys ( $ this -> parentKey ) ; foreach ( $ cached as $ row ) { if ( in_array ( $ row -> __get ( $ this -> key ) , $ keys ) ) { $ this -> rows [ ] = $ row ; } } } return $ this ; }
Execute the select query defined by this result.

@return $this
Execute the select query defined by this result .