Laravel: динамически получать заказы, используемые в запросе? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь создать общий метод success, который анализирует мои запросы и автоматически устанавливает некоторые данные ответа.

$items = Item::query()
   ->where('blah', $req->('blah_filter')
   ->orderBy('name', 'desc')
   ->paginate();

return success($items, 'yay, some results');

Пока все работает нормально,

НО, я также хотел бы вернуть использованный «заказ». Есть ли какой-нибудь способ узнать это из коллекции paginate или get? Список заказов?

РЕДАКТИРОВАТЬ: Под заказ, я имею в виду от orderBy не связанных моделей.

Например, с коллекцией Paginator мы можем вернуть:

return [
    'total' => $items->total(),
    'per_page' => $items->perPage(),
    'current_page' => $items->currentPage(),
    'items' => $items->items()
];

НО не может получить порядок, использованный в запросе:

return [
    'order' => $items->someCallHere()
];

// trying to return something like this:

[
    'order' => [
        'by' => 'name',
        'direction' => 'desc'
    ]
]

1 Ответ

1 голос
/ 13 июня 2019

Вам нужно немного изменить свой код.

Снимите paginate() с конца, так как вы сначала хотите получить заказы.Добавьте его потом, чтобы получить items.

$items = Item::query()
   ->where('blah', $req->('blah_filter')
   ->orderBy('name', 'desc');

// in order to get the ordering used you can use:
$ordering = $items->getQuery()->orders;

// do something with $ordering

// this will be an array like this:
/**
array:1 [▼
  0 => array:2 [▼
    "column" => "created_at"
    "direction" => "desc"
  ]
]
*/

return success($items->paginate(), 'yay, some results');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...