Hello,

J'ai un petit soucis que j'ai réglé mais ne suis pas satisfait car pour moi c'est plus du bricolage que de la pure compréhension.

J'avais ce code qui me mettais ce message d'erreur:"DateTime::__construct() expects parameter 1 to be string"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
          if ($valetOccupationtimedepartured >= $systemOptionsValetCount) {
            $date_departurelmore = new DateTime($datetime_departure);
            while ( $valetOccupationtimedepartured >= $systemOptionsValetCount) {
                $numMinutes = 15;
                $date_departurelmore->modify ("+{$numMinutes} minutes");
                $valetOccupationtimearrival = self::countplaceviphourdays($date_departurelmore);
          }
 
    public function countplaceviphourdays($datetime_valet)
    {
        $numMinutes = 59;
        $date_more = new DateTime($datetime_valet);
        $date_less = clone $date_more;
        $date_more->modify ("+{$numMinutes} minutes");
        $date_less->modify ("-{$numMinutes} minutes");
 
        $vipOccupationtime = DB::table('reservations')
            ->where(function($query) use ($date_less,$date_more){
                $query->whereBetween('date_of_departure', [$date_less, $date_more])
                ->orWhereBetween('date_of_arrival', [$date_less, $date_more]);
                    }) 
            ->where('reservation_type', '=', 'valet')
            ->where('payment_status', '=', 'completed')
            ->where('is_returned', '!=', '1')
            ->count();
 
        return $vipOccupationtime;
    }
C'étais la variable $date_departurelmore qui fesait cette erreur car quand j'arrivais à la function cette ligne là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
   $date_more = new DateTime($datetime_valet);
me fessait une erreur

donc du coups pour mettre cette variable en string j'ai du ajouter ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$day_arrivalmore = $date_arrivalmore->format('Y-m-d');
$minute_arrivalmore = $date_arrivalmore->format('H:i');
 $datetime_arrivalmore=$day_arrivalmore." ". $minute_arrivalmore;
ce qui donne ce code au final:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
            $date_arrivalmore = new DateTime($datetime_arrival);
            while ( $valetOccupationtimearrival >= $systemOptionsValetCount) {
                $numMinutes = 15;
                $date_arrivalmore->modify ("-{$numMinutes} minutes");
                $day_arrivalmore = $date_arrivalmore->format('Y-m-d');
                $minute_arrivalmore = $date_arrivalmore->format('H:i');
                $datetime_arrivalmore=$day_arrivalmore." ". $minute_arrivalmore;
                $valetOccupationtimearrival = self::countplaceviphourdays($datetime_arrivalmore);
                $date_arrivalmore = new DateTime($datetime_arrivalmore);
            }
 
 
    public function countplaceviphourdays($datetime_valet)...
Et là ça marche mon problème c'est que j'arrive pas à trouver la solution toute bête pour éviter d'ajouter ce bricolage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$day_arrivalmore = $date_arrivalmore->format('Y-m-d');
$minute_arrivalmore = $date_arrivalmore->format('H:i');
 $datetime_arrivalmore=$day_arrivalmore." ". $minute_arrivalmore;
Merci d'avance pour toute aide et surtout savoir si il y a une solution