Skip to content

Commit

Permalink
Merge pull request #2191 from yajra/orderByNullsLast
Browse files Browse the repository at this point in the history
[9.0] Improve orderByNullsLast SQL generation.
  • Loading branch information
yajra authored Sep 26, 2019
2 parents d8a965a + 95fae79 commit 255e249
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 22 deletions.
6 changes: 5 additions & 1 deletion src/QueryDataTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,11 @@ protected function getNullsLastSql($column, $direction)
{
$sql = $this->config->get('datatables.nulls_last_sql', '%s %s NULLS LAST');

return sprintf($sql, $column, $direction);
return str_replace(
[':column', ':direction'],
[$column, $direction],
sprintf($sql, $column, $direction)
);
}

/**
Expand Down
42 changes: 21 additions & 21 deletions src/config/datatables.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@
/*
* DataTables search options.
*/
'search' => [
'search' => [
/*
* Smart search will enclose search keyword with wildcard string "%keyword%".
* SQL: column LIKE "%keyword%"
*/
'smart' => true,
'smart' => true,

/*
* Multi-term search will explode search keyword using spaces resulting into multiple term search.
*/
'multi_term' => true,
'multi_term' => true,

/*
* Case insensitive will search the keyword in lower case format.
Expand All @@ -26,48 +26,48 @@
* Wild card will add "%" in between every characters of the keyword.
* SQL: column LIKE "%k%e%y%w%o%r%d%"
*/
'use_wildcards' => false,
'use_wildcards' => false,

/*
* Perform a search which starts with the given keyword.
* SQL: column LIKE "keyword%"
*/
'starts_with' => false,
'starts_with' => false,
],

/*
* DataTables internal index id response column name.
*/
'index_column' => 'DT_RowIndex',
'index_column' => 'DT_RowIndex',

/*
* List of available builders for DataTables.
* This is where you can register your custom dataTables builder.
*/
'engines' => [
'eloquent' => \Yajra\DataTables\EloquentDataTable::class,
'query' => \Yajra\DataTables\QueryDataTable::class,
'collection' => \Yajra\DataTables\CollectionDataTable::class,
'resource' => \Yajra\DataTables\ApiResourceDataTable::class,
'engines' => [
'eloquent' => Yajra\DataTables\EloquentDataTable::class,
'query' => Yajra\DataTables\QueryDataTable::class,
'collection' => Yajra\DataTables\CollectionDataTable::class,
'resource' => Yajra\DataTables\ApiResourceDataTable::class,
],

/*
* DataTables accepted builder to engine mapping.
* This is where you can override which engine a builder should use
* Note, only change this if you know what you are doing!
*/
'builders' => [
'builders' => [
//Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent',
//Illuminate\Database\Eloquent\Builder::class => 'eloquent',
//Illuminate\Database\Query\Builder::class => 'query',
//Illuminate\Support\Collection::class => 'collection',
],

/*
* Nulls last sql pattern for Posgresql & Oracle.
* For MySQL, use '-%s %s'
* Nulls last sql pattern for PostgreSQL & Oracle.
* For MySQL, use 'CASE WHEN :column IS NULL THEN 1 ELSE 0 END, :column :direction'
*/
'nulls_last_sql' => '%s %s NULLS LAST',
'nulls_last_sql' => ':column :direction NULLS LAST',

/*
* User friendly message to be displayed on user if error occurs.
Expand All @@ -76,28 +76,28 @@
* 'throw' - Throws a \Yajra\DataTables\Exceptions\Exception. Use your custom error handler if needed.
* 'custom message' - Any friendly message to be displayed to the user. You can also use translation key.
*/
'error' => env('DATATABLES_ERROR', null),
'error' => env('DATATABLES_ERROR', null),

/*
* Default columns definition of dataTable utility functions.
*/
'columns' => [
'columns' => [
/*
* List of columns hidden/removed on json response.
*/
'excess' => ['rn', 'row_num'],
'excess' => ['rn', 'row_num'],

/*
* List of columns to be escaped. If set to *, all columns are escape.
* Note: You can set the value to empty array to disable XSS protection.
*/
'escape' => '*',
'escape' => '*',

/*
* List of columns that are allowed to display html content.
* Note: Adding columns to list will make us available to XSS attacks.
*/
'raw' => ['action'],
'raw' => ['action'],

/*
* List of columns are are forbidden from being searched/sorted.
Expand All @@ -114,7 +114,7 @@
/*
* JsonResponse header and options config.
*/
'json' => [
'json' => [
'header' => [],
'options' => 0,
],
Expand Down

0 comments on commit 255e249

Please sign in to comment.