Skip to content

Instantly share code, notes, and snippets.

@paulgiorgi
Forked from InToSSH/eloquent_macro.php
Created January 21, 2023 23:46
Show Gist options
  • Save paulgiorgi/e09971b6eaa36dddf438323527289afd to your computer and use it in GitHub Desktop.
Save paulgiorgi/e09971b6eaa36dddf438323527289afd to your computer and use it in GitHub Desktop.
Laravel Eloquent - Order By Relation macro
<?php
Builder::macro('orderByRelation', function(string $searchColumn, string $dir) {
list($relation, $column) = explode('.', $searchColumn);
$relation_table = $this->getRelation($relation)->getModel()->getTable();
$relation_foreign_key = $this->getRelation($relation)->getForeignKeyName();
$query_table = $this->getModel()->getTable();
$this->select($query_table . '.*')
->join($relation_table, $query_table . '.' . $relation_foreign_key, '=', $relation_table . '.id')
->orderBy($relation_table . '.' . $column, $dir);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment