首页 > 解决方案 > 如何根据特定字段对 Laravel Eloquent 查询中的数据进行排序

问题描述

我有这个雄辩的查询:

$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
                (
                )

        )

标签: laravel

解决方案


您应该能够订购与此类似的东西:

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

基本上,您可以使用该方法来判断orderBy()应使用哪一列进行排序以及排序的类型,在本例中为升序。


推荐阅读