Added capacity for concatenating columns
This commit is contained in:
@ -57,6 +57,11 @@ For example, if you want to search the name, email address and username of a use
|
|||||||
$users = Searchy::users('name', 'email', 'username')->query('John Smith');
|
$users = Searchy::users('name', 'email', 'username')->query('John Smith');
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Searching Joined/Concatenated Columns
|
||||||
|
Sometimes you may want to leverage searches on concatenated column. For example, on a `first_name` and `last_name` field but you only want to run the one query. To do this can separate columns with a double colon:
|
||||||
|
```php
|
||||||
|
$users = Searchy::users('first_name::last_name')->query('John Smith');
|
||||||
|
```
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
@ -34,6 +34,6 @@ class ConsecutiveCharactersMatcher extends BaseMatcher
|
|||||||
{
|
{
|
||||||
$searchString = $this->formatSearchString( $rawString );
|
$searchString = $this->formatSearchString( $rawString );
|
||||||
|
|
||||||
return "IF($column {$this->operator} '$searchString', ROUND({$this->multiplier} * (CHAR_LENGTH( '$rawString' ) / CHAR_LENGTH( REPLACE($column, ' ', '') ))), 0)";
|
return "IF(REPLACE($column, '\.', '') {$this->operator} '$searchString', ROUND({$this->multiplier} * (CHAR_LENGTH( '$rawString' ) / CHAR_LENGTH( REPLACE($column, ' ', '') ))), 0)";
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -63,7 +63,12 @@ abstract class BaseSearchDriver implements SearchDriverInterface {
|
|||||||
$query = [];
|
$query = [];
|
||||||
|
|
||||||
foreach ($searchFields as $searchField) {
|
foreach ($searchFields as $searchField) {
|
||||||
$query[] = $this->buildSelectCriteria( $searchField );
|
if (strpos($searchField, '::')){
|
||||||
|
$concatString = explode('::', $searchField);
|
||||||
|
$query[] = $this->buildSelectCriteria( "CONCAT({$concatString[0]}, ' ', {$concatString[1]})");
|
||||||
|
} else {
|
||||||
|
$query[] = $this->buildSelectCriteria( $searchField );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return \DB::raw(implode(' + ', $query) . ' AS ' . \Config::get('searchy::fieldName'));
|
return \DB::raw(implode(' + ', $query) . ' AS ' . \Config::get('searchy::fieldName'));
|
||||||
|
Reference in New Issue
Block a user