2017-10-05 5 views
0

Ma requête pour extraire une donnée de base de données est,Format de date de requête dans 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 

Comment puis-je changer pour Laravel modèle éloquent,

J'ai essayé de le changer comme,

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

mais nous avons eu une erreur comme,

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

Comment puis-je obtenir la valeur correcte au format date dans laravel

+0

vous utilisez le format de date dans requête de sélection, cette raison d'erreur –

Répondre

1

Utilisez raw déclaration à la place. Par exemple:

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

En fait, Laravel a un mutateur pour le champ avec le type DateTime. Vous pouvez donc le sélectionner comme normal et le formater plus tard. Exemple;

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

Plus d'informations lire le official documentation et this

1

Laravel ne prend pas en charge les expressions complexes complexes, vous devez donc utiliser Raw Expressions. Essayez de cette façon:

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

Pour utiliser ->orderBy() dans cette requête vous devez définir les modes stricts manuellement ommettre par ordre comprobations. Faites-le dans vos paramètres de tableau de connexion de base de données de configuration 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' 
     ], 

Ou mettre strict => false (je ne vais pas le faire)