protected function _relationship($modelName, $relationship, $foreignKey=null, $localKey=null)
    {
        /**
         * PSR-4 support check
         * 
         * @see https://github.com/yidas/codeigniter-psr4-autoload
         */
        if (strpos($modelName, "\\") !== false ) {
            
            $model = new $modelName;

        } else {
            // Original CodeIgniter 3 model loader
            get_instance()->load->model($modelName);
            $model = $this->$modelName;
        }

        $libClass = __CLASS__;
        
        // Check if is using same library
        if (!is_subclass_of($model, $libClass)) {
            throw new Exception("Model `{$modelName}` does not extend {$libClass}", 500);
        }

        // Keys
        $foreignKey = ($foreignKey) ? $foreignKey : $this->primaryKey;
        $localKey = ($localKey) ? $localKey : $this->primaryKey; 

        $query = $model->find()
            ->where($foreignKey, $this->$localKey);

        // Inject Model name into query builder for ORM relationships
        $query->modelName = $modelName;
        // Inject relationship type into query builder for ORM relationships
        $query->relationship = $relationship;

        return $query;
    }
protected function _relationship($modelName, $relationship, $foreignKey=null, $localKey=null)
    {
        /**
         * PSR-4 support check
         * 
         * @see https://github.com/yidas/codeigniter-psr4-autoload
         */
        if (strpos($modelName, "\\") !== false ) {
            
            $model = new $modelName;

        } else {
            // Original CodeIgniter 3 model loader
            get_instance()->load->model($modelName);
            $model = $this->$modelName;
        }

        $libClass = __CLASS__;
        
        // Check if is using same library
        if (!is_subclass_of($model, $libClass)) {
            throw new Exception("Model `{$modelName}` does not extend {$libClass}", 500);
        }

        // Keys
        $foreignKey = ($foreignKey) ? $foreignKey : $this->primaryKey;
        $localKey = ($localKey) ? $localKey : $this->primaryKey; 

        $query = $model->find()
            ->where($foreignKey, $this->$localKey);

        // Inject Model name into query builder for ORM relationships
        $query->modelName = $modelName;
        // Inject relationship type into query builder for ORM relationships
        $query->relationship = $relationship;

        return $query;
    }
protected function _relationship ( $ modelName , $ relationship , $ foreignKey = null , $ localKey = null ) { /**
         * PSR-4 support check
         * 
         * @see https://github.com/yidas/codeigniter-psr4-autoload
         */ if ( strpos ( $ modelName , "\\" ) !== false ) { $ model = new $ modelName ; } else { // Original CodeIgniter 3 model loader get_instance ( ) -> load -> model ( $ modelName ) ; $ model = $ this -> $ modelName ; } $ libClass = __CLASS__ ; // Check if is using same library if ( ! is_subclass_of ( $ model , $ libClass ) ) { throw new Exception ( "Model `{$modelName}` does not extend {$libClass}" , 500 ) ; } // Keys $ foreignKey = ( $ foreignKey ) ? $ foreignKey : $ this -> primaryKey ; $ localKey = ( $ localKey ) ? $ localKey : $ this -> primaryKey ; $ query = $ model -> find ( ) -> where ( $ foreignKey , $ this -> $ localKey ) ; // Inject Model name into query builder for ORM relationships $ query -> modelName = $ modelName ; // Inject relationship type into query builder for ORM relationships $ query -> relationship = $ relationship ; return $ query ; }
Base relationship.

@param string $modelName The model class name of the related record
@param string $relationship
@param string $foreignKey
@param string $localKey
@return object CI_DB_query_builder
Base relationship .