protected function joinForSearch($mappings, $subquery)
    {
        $mappings = is_array($mappings) ? $mappings : (array) $mappings;

        $columns = new ColumnCollection;

        $grammar = $this->query->getGrammar();

        $joiner = static::$joinerFactory->make($subquery->getQuery(), $this->model);

        // Here we loop through the search mappings in order to join related tables
        // appropriately and build a searchable column collection, which we will
        // use to build select and where clauses with correct table prefixes.
        foreach ($mappings as $mapping => $weight) {
            if (strpos($mapping, '.') !== false) {
                list($relation, $column) = $this->model->parseMappedColumn($mapping);

                $related = $joiner->leftJoin($relation);

                $columns->add(
                    new Column($grammar, $related->getTable(), $column, $mapping, $weight)
                );
            } else {
                $columns->add(
                    new Column($grammar, $this->model->getTable(), $mapping, $mapping, $weight)
                );
            }
        }

        return $columns;
    }
protected function joinForSearch($mappings, $subquery)
    {
        $mappings = is_array($mappings) ? $mappings : (array) $mappings;

        $columns = new ColumnCollection;

        $grammar = $this->query->getGrammar();

        $joiner = static::$joinerFactory->make($subquery->getQuery(), $this->model);

        // Here we loop through the search mappings in order to join related tables
        // appropriately and build a searchable column collection, which we will
        // use to build select and where clauses with correct table prefixes.
        foreach ($mappings as $mapping => $weight) {
            if (strpos($mapping, '.') !== false) {
                list($relation, $column) = $this->model->parseMappedColumn($mapping);

                $related = $joiner->leftJoin($relation);

                $columns->add(
                    new Column($grammar, $related->getTable(), $column, $mapping, $weight)
                );
            } else {
                $columns->add(
                    new Column($grammar, $this->model->getTable(), $mapping, $mapping, $weight)
                );
            }
        }

        return $columns;
    }
protected function joinForSearch ( $ mappings , $ subquery ) { $ mappings = is_array ( $ mappings ) ? $ mappings : ( array ) $ mappings ; $ columns = new ColumnCollection ; $ grammar = $ this -> query -> getGrammar ( ) ; $ joiner = static :: $ joinerFactory -> make ( $ subquery -> getQuery ( ) , $ this -> model ) ; // Here we loop through the search mappings in order to join related tables // appropriately and build a searchable column collection, which we will // use to build select and where clauses with correct table prefixes. foreach ( $ mappings as $ mapping => $ weight ) { if ( strpos ( $ mapping , '.' ) !== false ) { list ( $ relation , $ column ) = $ this -> model -> parseMappedColumn ( $ mapping ) ; $ related = $ joiner -> leftJoin ( $ relation ) ; $ columns -> add ( new Column ( $ grammar , $ related -> getTable ( ) , $ column , $ mapping , $ weight ) ) ; } else { $ columns -> add ( new Column ( $ grammar , $ this -> model -> getTable ( ) , $ mapping , $ mapping , $ weight ) ) ; } } return $ columns ; }
Join related tables on the search subquery.

@param  array $mappings
@param  \Sofa\Eloquence\Searchable\Subquery $subquery
@return \Sofa\Eloquence\Searchable\ColumnCollection
Join related tables on the search subquery .