laravel метод orderBy коллекции с типом столбца строкового значения - PullRequest
0 голосов
/ 13 марта 2020

Я использую приведенный ниже код для сортировки некоторых мета-зон, но тип значения столбца - строка, поэтому метод orderBy сортирует его как строку (значение = '22')

Код:

$metas = Meta::where(['cat' => 'view', 'meta_name' => 'daily'])->orderBy('meta_value', 'desc')->get();

так, как я сортирую их на основе числового значения c? если нет никакого решения по laravel методам, пожалуйста, укажите php & mysql

Спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Вы можете использовать sortByDesc. Попробуйте следующий код:

    $metas = Meta::where(['cat' => 'view', 'meta_name' => 'daily'])->get()
             ->sortByDesc(function($value){
                 return (int) $value->meta_value;
             });
0 голосов
/ 13 марта 2020

Meta::where()->get() возвращает laravel коллекцию . В случае, если вам нужна пользовательская сортировка, вы можете использовать пользовательскую функцию сортировки, которая внутренне использует php s uasort () .

Mega::where([..])->get()->sort(function($a, $b) {
    return (int)$a->meta_value <=> (int)$b->meta_value;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...