мой код:
Код: Выделить всё
$this->data = Category::find()->indexBy('id')->orderBy('name')->asArray()->all();
1
10
11
2
21
22
3
а нужно сортировать "естественно"
1
2
3
10
11
21
22
У кого есть какие идеи? Заранее спасибо за Ваше внимание.
Код: Выделить всё
$this->data = Category::find()->indexBy('id')->orderBy('name')->asArray()->all();
и даже не знал что СУБД здесь что-то может решать
Вы имеете ввиду добавить вот так?
Код: Выделить всё
orderBy(['name' => 'ASC'])
я имею в виду, что нужно почитать, что написано по ссылкеnew-developer-site писал(а): ↑2017.03.30, 15:44Вы имеете ввиду добавить вот так?Код: Выделить всё
orderBy(['name' => 'ASC'])
спасибо, я такое сам находил, до обращения на форум, но меня интересует вопрос как это внедрить в yii ...что написано по ссылке
вы наверно не заметили по ссылкеnew-developer-site писал(а): ↑2017.03.30, 15:44Вы имеете ввиду добавить вот так?Код: Выделить всё
orderBy(['name' => 'ASC'])
Код: Выделить всё
$sql = 'SELECT `name`,`id` FROM `cetegory` ORDER BY LENGTH (`name`),`name`';
->orderBy(new \yii\db\Expression('LENGTH (name),name'))new-developer-site писал(а): ↑2017.03.31, 11:03Код: Выделить всё
$sql = 'SELECT `name`,`id` FROM `cetegory` ORDER BY LENGTH (`name`),`name`';
а если не только числа?->orderBy(new \yii\db\Expression('LENGTH (name),name'))
Если сортировать только числа, то можно привидением типов сделать
а если строки то то что выше и обсудили ...new-developer-site писал(а): ↑2017.03.31, 12:01а если не только числа?->orderBy(new \yii\db\Expression('LENGTH (name),name'))
Если сортировать только числа, то можно привидением типов сделать
Код: Выделить всё
$this->data = Category::find()->indexBy('id')->orderBy(new Expression('left(name, 2), LENGTH(name), name'))->asArray()->all();