update v1.0.4

This commit is contained in:
sujitprasad
2016-01-04 18:05:45 +05:30
parent 372485336b
commit 4864e5a3f1
529 changed files with 20956 additions and 8178 deletions

View File

@@ -23,6 +23,7 @@ trait SearchableTrait
* @param \Illuminate\Database\Eloquent\Builder $q
* @param string $search
* @param float|null $threshold
* @param boolean $entireText
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeSearch(Builder $q, $search, $threshold = null, $entireText = false)
@@ -110,6 +111,20 @@ trait SearchableTrait
}
}
/**
* Returns whether or not to keep duplicates.
*
* @return array
*/
protected function getGroupBy()
{
if (array_key_exists('groupBy', $this->searchable)) {
return $this->searchable['groupBy'];
}
return false;
}
/**
* Returns the table columns.
*
@@ -154,26 +169,29 @@ trait SearchableTrait
*/
protected function makeGroupBy(Builder $query)
{
$driver = $this->getDatabaseDriver();
if ($driver == 'sqlsrv') {
$columns = $this->getTableColumns();
if ($groupBy = $this->getGroupBy()) {
$query->groupBy($groupBy);
} else {
$id = $this->getTable() . '.' .$this->primaryKey;
$driver = $this->getDatabaseDriver();
if ($driver == 'sqlsrv') {
$columns = $this->getTableColumns();
} else {
$columns = $this->getTable() . '.' .$this->primaryKey;
}
$query->groupBy($columns);
$joins = array_keys(($this->getJoins()));
foreach ($this->getColumns() as $column => $relevance) {
array_map(function($join) use ($column, $query){
if(Str::contains($column, $join)){
$query->groupBy("$column");
array_map(function ($join) use ($column, $query) {
if (Str::contains($column, $join)) {
$query->groupBy($column);
}
}, $joins);
}
}
$query->groupBy($id);
}
/**
@@ -184,7 +202,7 @@ trait SearchableTrait
*/
protected function addSelectsToQuery(Builder $query, array $selects)
{
$selects = new Expression(implode(' + ', $selects) . ' as relevance');
$selects = new Expression('avg(' . implode(' + ', $selects) . ') as relevance');
$query->addSelect($selects);
}