У меня эти столбцы timestamp в таблице базы данных - expiration, edit, created_at. Мне нужно заказать «edit», если дата «expiration» больше, чем сегодняшняя дата, иначе мне нужно заказать «created_at».Laravel order by conditions eloquent или sql
Я что-то вроде этого пытаюсь, но он не работает правильно
$items = $items
->orderBy(DB::raw("CASE WHEN expiration >= $time THEN edit ELSE created_at END"), 'DESC')
->get();
или
$items = $items
->orderBy(DB::raw("CASE WHEN expiration >= $time THEN edit END"), 'DESC')
->orderBy('created_at', 'DESC')
->get();
переменных $ времени правильно, так что моя проблема в запросе. Выборочные данные:
id name created_at expiration edit
1. it1 2015-03-16 15:42:40 0000-00-00 00:00:00 2015-03-16 15:42:40
2. it2 2015-03-16 15:37:27 2015-03-16 00:00:00 2015-03-16 15:37:27
3. it3 2015-03-16 12:36:50 2015-03-27 00:00:00 2015-03-16 14:52:19
И мне нужно в порядке -> и3, It1, IT2
переменной $ времени = 2015-03-17
Это показывает order_by редактировать, когда действия не> = {$} время. – user3921996
Можете ли вы уточнить? Если вы действительно хотите заказать «X» или «Y», то это то, что вам нужно. Возможно, вы хотите заказать «X» сначала, а затем «Y»? Покажите пример данных и ожидаемый результат. –
Я добавил к своему вопросу несколько данных – user3921996