не работает с ключевым словом laravel - PullRequest
1 голос
/ 20 октября 2019

Я использую laravel и создаю запрос, но orderby не работает с полями генерации в select

$slots = Slot::select(\DB::raw('STR_TO_DATE(slots.when, "%h:%i %p") as timestart,id, `when`, end, namePanel, nameNetwork, nameAngel101, nameAngel102, nameAngel103, locationPanel, locationNetwork, locationAngel101, locationAngel102, locationAngel103, day_id, moderator_id, created_at, updated_at'))->where('day_id',$day['id'])->orderBy('timestart','ASC')->get();

результат не отсортирован с использованием timestart, попытался распечатать -> toSql (), онвыглядит нормально и работает нормально в phpmyadmin

есть идеи?

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Чтобы упростить работу, измените тип столбца when с varchar на время .

$table->time('when');

10: 00 AM - это время тип столбца.


Тогда вы можете легко orderBy это без приведения.


Если вы хотите иметь строковый тип, вы можете добавить атрибут в модель Slot.

protected $appends = ['text_when'];

public function getTextWhenAttribute()
{
    //return some casting here
}
0 голосов
/ 20 октября 2019

Вы можете использовать это .. Я думаю, это поможет вам. Выглядит как ниже

    $slots = Slot::select(\DB::raw('STR_TO_DATE(slots.when, "%h:%i %p") as timestart,id, `when`, end, namePanel, nameNetwork, nameAngel101, nameAngel102, nameAngel103, locationPanel, locationNetwork, locationAngel101, locationAngel102, locationAngel103, day_id, moderator_id, created_at, updated_at'))->orderBy('timestart','ASC')->where('day_id',$day['id'])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...