0
votes

Ordonnez coupons basés sur l'expiration Statut Laravel

J'ai besoin d'afficher la liste des coupons et de le commander en fonction de la date créée_at et du statut d'expiration.

Les colonnes de ma table de coupons p> xxx pré>

ma requête Laravel P>

$coupons= Coupon::where('status', 2)->orderBy('created_at', 'DESC')->orderBy( First I will need to compare expired_at with today date here)->get();


3 commentaires

Si vous avez des doutes dans votre requête, essayez -> tosql () au lieu de -> obtenir ()


et qu'est-ce que coupon_status ? stockez-vous expired_at ?


Coupon_Status n'est pas une base de données de colonnes, c'est simplement si le coupon est déjà expiré ou non d'état basé sur la date d'aujourd'hui, expire_at est expirée date du coupon


3 Réponses :


3
votes

comparer à expiration avec aujourd'hui ( expired_at ) xxx


4 commentaires

J'ai édité la question, le statut de coupon devra être comparable d'abord avec la date d'aujourd'hui, ce n'est pas sur la base de données Colum


La requête fonctionne mais la liste ordonnée n'est pas correcte, certains coupons expirés sont toujours affichés ci-dessus Coupon en cours -> Orderby ('Created_at', 'Desc') -> Ordonnance de l'expiration_a <". \ Carbon \ Carbon :: Today () -> TodatreString (). "Alors 0 quand Expired_a est null, alors 1 autre 1 extrémité de descente")


@Tomkur mis à jour, si vous utilisez le type de données de la date, vous devez utiliser Curdate () au lieu de maintenant ()


son travail, je ne sais pas que je ne peux pas utiliser la date de carbone, doit utiliser Curdate ()



1
votes

Il suffit d'utiliser commander par coupon_status asc, créé_at desc '

Ce Expired_at peut comparé à Curdate () :

Essayez cette requête: xxx


4 commentaires

J'ai édité la question, le statut de coupon devra être comparable d'abord avec la date d'aujourd'hui, ce n'est pas sur la colonne DB


La requête que j'utilise à l'aide du cas où -> Orderbyraw ("Case quand Expired_a <". \ Carbon \ Carbon :: Today () -> TodatreString () ) - La commande de liste n'est pas correcte, certains coupons expirés affichent toujours des coupons en cours


@Tomkur est votre expired_at est DateTime ou date?


expire_at est la date seulement et NULL signifie qu'il n'y a pas de date d'expiration, ce seront des coupons en cours



1
votes

Vous pouvez également écrire comme ceci:

$coupons= Coupon::where('status', 2)->orderBy([ 'coupon_status' => 'ASC', 'created_at' => 'DESC' ])->get();


2 commentaires

J'ai édité la question, le statut de coupon devra être comparable d'abord avec la date d'aujourd'hui, ce n'est pas sur la base de données Colum


$ coupons = coupon :: WhereDate ('Expired_at', Carbon :: Aujourd'hui (aujourd'hui ()) -> Où ('Statut', 2) -> Orderby ("Créé_at '," Desc') -> get (); S'il vous plaît essayez avec cela? J'espère que ça va vous aider