Skip to content

Instantly share code, notes, and snippets.

@JoseCage
Forked from reinink/order_by_nulls.php
Created July 16, 2019 22:52
Show Gist options
  • Save JoseCage/d4b0e25ab5cd846654f63e6a885f6bb5 to your computer and use it in GitHub Desktop.
Save JoseCage/d4b0e25ab5cd846654f63e6a885f6bb5 to your computer and use it in GitHub Desktop.
<?php
use Illuminate\Database\Query\Builder;
Builder::macro('orderByNulls', function ($column, $direction = 'asc', $nulls = 'last', $bindings = []) {
$column = $this->getGrammar()->wrap($column);
$direction = strtolower($direction) === 'asc' ? 'asc' : 'desc';
$nulls = strtolower($nulls) === 'first' ? 'NULLS FIRST' : 'NULLS LAST';
return $this->orderByRaw("$column $direction $nulls", $bindings);
});
Builder::macro('orderByNullsLast', function ($column, $direction = 'asc', $bindings = []) {
return $this->orderByNulls($column, $direction, 'last', $bindings);
});
Builder::macro('orderByNullsFirst', function ($column, $direction = 'asc', $bindings = []) {
return $this->orderByNulls($column, $direction, 'first', $bindings);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment