Заказ по Eloquent в Laravel - PullRequest
       0

Заказ по Eloquent в Laravel

0 голосов
/ 27 февраля 2020

В моей базе данных есть таблица, в которой есть поле с именем round со следующими записями

  • Регулярный сезон -1
  • Регулярный сезон -2
  • Регулярный Сезон -10
  • Обычный сезон -11
  • Обычный сезон -21

et c

но при заказе с orderBy ('round') I вернул их вот так

  • Регулярный сезон -1
  • Регулярный сезон -10
  • Регулярный сезон -11
  • Регулярный сезон -2
  • Регулярный сезон -21

и мне это нужно последовательно

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Ваш столбец основан на тексте и поэтому сортируется в алфавитном порядке , а не в числовом виде . Разделите столбец базы данных на два:

$table->string('round');           // e.g. "Semifinals", "Regular Season"
$table->integer('round_number');   // e.g. 1, 2, 3, ... , 10

Тогда вы можете сделать ->orderBy('round', 'asc')->orderBy('round_number', 'asc');

0 голосов
/ 27 февраля 2020

Вы можете сохранить round как целочисленный столбец со знаком вместо строки в вашей БД:

$table->integer('round');
$table->string('type');

Теперь вы можете использовать orderBy('round') для получения желаемого результата.

Вы также можете определить аксессор в вашей модели для round, например:

/**
 * Get the formatted round value.
 *
 * @return string
 */
public function getRoundAttribute($value)
{
    return "{$this->type} {$value}";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...