简体   繁体   中英

Date format Query in Laravel

My query for fetching a data from database is,

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

How can i change it to laravel eloquent model,

I have been trying to change it like,

 $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);

But got an error like,

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

How can i get the correct value in date format in laravel

Laravel doesn't support complex select expressions, so you have to use Raw Expressions . Try in this way:

    $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);

In order to use ->orderBy() in this query you would have to set strict modes manually to ommit order by validation. Do it in your database.php config database connection array parameters:

'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'
        ],

Or set strict => false (I won't do it)

Use raw statement instead. For example:

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

By the way actually, Laravel has mutator for field with DateTime type. So you can select it as normal and format it later. Example;

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

More information read the official documentation and this

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM