private function getModelRelation($relation)
    {
        $method = basename(str_replace('\\', '/', get_class($relation)));

        switch ($method) {
            case 'BelongsTo':
            case 'HasMany':
            case 'HasOne':
                $model = $relation->getRelated();
                break;
            default:
                $model = $relation;
        }

        $table = $model->getTable();

        switch ($method) {
            case 'BelongsTo':
            case 'BelongsToMany':
                $parent_key = $relation->getQualifiedForeignKey();
                $foreign_key = $relation->getQualifiedOwnerKeyName();
            break;
            case 'HasMany':
                $parent_key = $relation->getQualifiedParentKeyName();
                $foreign_key = $relation->getQualifiedForeignKeyName();
            break;
            case 'HasOne':
                $parent_key = $table.'.'.$relation->getParentKey();
                $foreign_key = $table.'.'.$relation->getForeignKeyName();
            break;
        }

        return [
            'model'       => $model,
            'method'      => $method,
            'table'       => $table,
            'parent_key'  => $parent_key,
            'foreign_key' => $foreign_key,
        ];
    }
private function getModelRelation($relation)
    {
        $method = basename(str_replace('\\', '/', get_class($relation)));

        switch ($method) {
            case 'BelongsTo':
            case 'HasMany':
            case 'HasOne':
                $model = $relation->getRelated();
                break;
            default:
                $model = $relation;
        }

        $table = $model->getTable();

        switch ($method) {
            case 'BelongsTo':
            case 'BelongsToMany':
                $parent_key = $relation->getQualifiedForeignKey();
                $foreign_key = $relation->getQualifiedOwnerKeyName();
            break;
            case 'HasMany':
                $parent_key = $relation->getQualifiedParentKeyName();
                $foreign_key = $relation->getQualifiedForeignKeyName();
            break;
            case 'HasOne':
                $parent_key = $table.'.'.$relation->getParentKey();
                $foreign_key = $table.'.'.$relation->getForeignKeyName();
            break;
        }

        return [
            'model'       => $model,
            'method'      => $method,
            'table'       => $table,
            'parent_key'  => $parent_key,
            'foreign_key' => $foreign_key,
        ];
    }
private function getModelRelation ( $ relation ) { $ method = basename ( str_replace ( '\\' , '/' , get_class ( $ relation ) ) ) ; switch ( $ method ) { case 'BelongsTo' : case 'HasMany' : case 'HasOne' : $ model = $ relation -> getRelated ( ) ; break ; default : $ model = $ relation ; } $ table = $ model -> getTable ( ) ; switch ( $ method ) { case 'BelongsTo' : case 'BelongsToMany' : $ parent_key = $ relation -> getQualifiedForeignKey ( ) ; $ foreign_key = $ relation -> getQualifiedOwnerKeyName ( ) ; break ; case 'HasMany' : $ parent_key = $ relation -> getQualifiedParentKeyName ( ) ; $ foreign_key = $ relation -> getQualifiedForeignKeyName ( ) ; break ; case 'HasOne' : $ parent_key = $ table . '.' . $ relation -> getParentKey ( ) ; $ foreign_key = $ table . '.' . $ relation -> getForeignKeyName ( ) ; break ; } return [ 'model' => $ model , 'method' => $ method , 'table' => $ table , 'parent_key' => $ parent_key , 'foreign_key' => $ foreign_key , ] ; }
Get the table keys based on the relation.

@param Relation $relation

@return array
Get the table keys based on the relation .