как отсортировать данные в Laravel Eloquent запросе на основе указанного поля c - PullRequest
0 голосов
/ 10 января 2020

У меня есть этот красноречивый запрос:

$events = Product::forCard()->latest()->take(setting('storefront_recent_products_section_total_products', 10))->get();

Я хочу отсортировать эту запись в порядке возрастания по start_event. Я пытался сделать это, но у меня есть некоторые проблемы, потому что данные поступают из нескольких таблиц.

Array
(
    [0] => Array
        (
            [price] => Modules\Support\Money Object
                (
                    [amount:Modules\Support\Money:private] => 
                    [currency:Modules\Support\Money:private] => USD
                )

            [special_price] => 
            [selling_price] => Modules\Support\Money Object
                (
                    [amount:Modules\Support\Money:private] => 
                    [currency:Modules\Support\Money:private] => USD
                )

            [special_price_start] => 
            [special_price_end] => 
            [options_count] => 0
            [id] => 40
            [slug] => -YvHm5m1m
            [in_stock] => 1
            [new_from] => 
            [new_to] => 
            [name] => Race4
            [description] => 
            [organizer] => 
            [short_description] => 
            [address] => 
            [city] => vehari
            [state] => pakistan
            [zip_code] => 
            [lat] => 
            [lng] => 
            [start_event] => 2020-01-13 00:00:00
            [end_event] => 
            [translations] => Array
                (
                    [0] => Array
                        (
                            [id] => 33
                            [product_id] => 40
                            [locale] => en
                            [name] => Race4
                            [city] => vehari
                            [state] => pakistan
                            [start_event] => 2020-01-13 00:00:00
                        )

                )

            [files] => Array
                (
                )

        )

Ответы [ 2 ]

2 голосов
/ 10 января 2020

Вы должны быть в состоянии заказать, что-то похожее по возрастанию:

$events = Product::forCard()->latest()
                            ->take(setting('storefront_recent_products_section_total_products', 10))
                            ->orderBy('start_event', 'asc');

В принципе, вы можете сказать, используя метод orderBy(), какой столбец будет использоваться для заказа и тип заказа, в этом дело по возрастанию.

0 голосов
/ 10 января 2020

Laravel позволяет легко и просто сортировать данные.

$events = Product::forCard()->latest()->take(setting('storefront_recent_products_section_total_products', 10))
->orderBy('start_event')->get();

Где start_event - столбец, который вы хотите использовать при сортировке.

Существует лучший подход, так как приведенный выше код автоматически сортирует возвращенные данные в по возрастанию , но вы можете явно указать, что делать.

Просто измените последнюю часть кода с помощью:

orderBy('start_event', 'ASC')->get(); /** If you want Ascending OR; **/

orderBy('start_event', 'DESC')->get(); /** If you want Descending. **/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...