Формат даты Запрос в Laravel

Мой запрос для получения данных из базы данных,

select mailboxtoolno,DATE_FORMAT(maileventdate,'%d %b %Y') as
date,DATE_FORMAT(maileventdate,'%H:%i:%s') as time,mailtype from
domiciliation_mailbox where reg_id =".$regid." order by id DESC

Как я могу изменить его на красноречивую модель Laravel,

Я пытался изменить это как,

 $timeline= mailbox::select('mailboxtoolno','DATE_FORMAT(maileventdate,"%d %b %Y") as date','DATE_FORMAT(maileventdate,"%H:%i:%s") as time','mailtype')
->where('reg_id', '=',$reg_id )
->paginate(10);

Но получил ошибку, как,

Unknown column 'DATE_FORMAT(maileventdate,"%d %b %Y")' in 'field list'

Как я могу получить правильное значение в формате даты в Laravel

0

Решение

использование raw утверждение вместо. Например:

$user = User::select(DB::raw('count(*) as user_count, status'))->where('status', '=', 'active');

Кстати, на самом деле, у Laravel есть мутатор для поля с типом DateTime. Таким образом, вы можете выбрать его как обычно и отформатировать позже. Пример;

$user = User::find(2);
$date = $user->created_at->format('d M Y'); // you can display it with any format you want with this way.

Больше информации читайте официальная документация а также этот

1

Другие решения

Laravel не поддерживает сложные выражения выбора, поэтому вы должны использовать Необработанные выражения. Попробуйте следующим образом:

    $timeline= mailbox::select('mailboxtoolno',DB::raw('DATE_FORMAT(maileventdate,"%d %b %Y") as date'),DB::raw('DATE_FORMAT(maileventdate,"%H:%i:%s") as time'),'mailtype')
->where('reg_id',$reg_id )
->orderBy('id','DESC')
->paginate(10);

Для того, чтобы использовать ->orderBy() в этом запросе вам нужно было бы вручную установить строгие режимы, чтобы пропустить порядок по комбинациям. Сделай это в своем database.php параметры массива соединений базы данных конфигурации:

'strict'    => true,
'modes'     => [
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'
],

Или установить strict => false (Я не буду этого делать)

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector