L'incrémentation des dates de Carbone
Je suis en train de créer un tableau de dates d'interdiction pour un système de réservation en Laravel 4. Il y a un test de ligne dans ma db avec un date_debut de 2016-01-24 et end_date de 2016-01-29.
C'est le code qui tire de la ligne et des boucles à travers les dates à l'aide de Carbone pour augmenter d'un jour & ajouter à un tableau:
$reserved = Reservation::where('property_id', $property->id)->get();
$blackoutDays = [];
foreach($reserved as $r)
{
$start = new \Carbon\Carbon($r->start_date);
$end = new \Carbon\Carbon($r->end_date);
$days = $start->diff($end)->days;
for($i = 0; $i <= $days; $i++)
{
$date = '';
$date = $start->addDays($i);
$blackoutDays[] = $date->format('Y-m-j');
}
}
Ce que j'essaie de faire en $blackoutDays est:
["2016-01-24", "2016-01-25", "2016-01-26", "2016-01-27", "2016-01-28", "2016-01-29"]
Mais ce que je suis réellement, il est ceci:
["2016-01-24", "2016-01-25", "2016-01-27", "2016-01-30", "2016-02-3", "2016-02-8"]
Personne ne sait pourquoi ce qui se passe /comment résoudre ce problème? Est-il une meilleure manière de faire ceci?
OriginalL'auteur Kevin Daniel | 2016-01-27
Vous devez vous connecter pour publier un commentaire.
Vous ne incrément
$i
à chaque exécution de votre boucle. Donc, il ajoute 1 dans la première manche, 2 jours dans le deuxième, de 3 jours dans le troisième et ainsi de suite.Donc, vous voulez remplacer
avec
Où vous avez probablement tombé dans la fosse, c'est l'idée que les jours sont ajoutés à partir de la
$start
objet date sur chaque appel, mais ce n'est pas le cas, que cet objet n'est pas "Immuable".OriginalL'auteur ArSeN
Pour plus de résultat plus propre, vous pouvez utiliser addDay() méthode:
Mais en fait c'est exactement le même. Le code Source pour addDay() méthode:
OriginalL'auteur Odin Thunder