Skip to content

Instantly share code, notes, and snippets.

@laudaikinhdi
Forked from InToSSH/eloquent_macro.php
Created July 26, 2022 02:54
Show Gist options
  • Save laudaikinhdi/c7e7447213aceccdb2eb953831aa3194 to your computer and use it in GitHub Desktop.
Save laudaikinhdi/c7e7447213aceccdb2eb953831aa3194 to your computer and use it in GitHub Desktop.

Revisions

  1. @InToSSH InToSSH revised this gist Apr 20, 2021. No changes.
  2. @InToSSH InToSSH created this gist Apr 19, 2021.
    11 changes: 11 additions & 0 deletions eloquent_macro.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <?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);
    });