2016-04-19 6 views
1

ich diese Funktion haben alle maxoffers von maxoffers Tisch zu bekommen:Laravel - json machen - in den variablen neue Objekte

public function maxoffers($id) 
    { 

     $offers = Maxoffer::where('article_id', $id)->latest()->get(['id', 'price', 'start', 'user_id']); 

     return $offers; 
    } 

und ich bekomme diese:

[{"id":121,"price":67,"start":"Sat, 23 Apr 2016 00:00:00 +0000","user_id":8},{"id":114,"price":45,"start":"Sun, 08 May 2016 00:00:00 +0000","user_id":9},{"id":113,"price":53,"start":"Sun, 24 Apr 2016 00:00:00 +0000","user_id":8},{"id":111,"price":55,"start":"Wed, 01 Jun 2016 00:00:00 +0000","user_id":11},{"id":110,"price":53,"start":"Fri, 03 Jun 2016 00:00:00 +0000","user_id":8},{"id":107,"price":53,"start":"Wed, 03 Aug 2016 00:00:00 +0000","user_id":8},{"id":106,"price":53,"start":"Mon, 01 Aug 2016 00:00:00 +0000","user_id":8},{"id":105,"price":53,"start":"Tue, 16 Aug 2016 00:00:00 +0000","user_id":8},{"id":104,"price":55,"start":"Thu, 21 Apr 2016 00:00:00 +0000","user_id":11},{"id":101,"price":57,"start":"Wed, 17 Aug 2016 00:00:00 +0000","user_id":8}] 

Jetzt habe ich alse : $ start = 'So, 03 Apr 2016 00:00:00'; $ end = 'Sa, 23 Sep. 2016 00:00:00';

Wie kann ich Tag für Tag gehen throuth $ Angebote von $ date bis $ Enddatum beginnen und, wenn kein Datum für diesen Tag ist in $ bietet mit Daten neues Objekt hinzuzufügen:

{"title":,"price":100,"start":"DATE_WHICH_NOT_EXCIST INTO_OFFERS","user_id":8} 

Wie Ich kann throut $ -Angebote gehen und wenn es kein Datum im Zeitraum von $ start bis $ end gibt, dann neues Objekt zu json hinzufügen?

+0

Sie können machen, während Schleife und in jedem hinzuzufügen drehen Sie einen Tag auf Startdatum, so etwas wie ** $ Start-> addDay(); **. Sie müssen ein Carbon-Datum eingeben, da dies eine Carbon-Funktion ist. –

+0

bitte zeige mir example als Antwort – Andrew

+0

Etwas wie: ' $ cond = true; $ dateToCheck = etwas; $ start = Kohlenstoff :: now(); // mache dein Startdatum hier while ($ cond) { if ($ dateToCheck == $ date) { // gefundenes Datum $ cond = false; } $ start-> addDay(); } ' –

Antwort

1

Ich habe den folgenden Code noch nicht durchgeführt, aber was Sie wollten, würde so aussehen.

Try this:

public function maxoffers($id) 
    { 

     $start_date = ; 
     $end_date = ; 

     $offers = Maxoffer::where('article_id', $id) 
          ->where('start', '>=', $start_date) 
          ->where('start', '<=', $end_date) 
          ->get(['id', 'price', 'start', 'user_id']); 

     $start_date = 'Sun, 03 Apr 2016 00:00:00'; 

     $end_date = 'Sat, 23 Sep 2016 00:00:00'; 

     while (strtotime($start_date) <= strtotime($end_date)) { 

      $start_date = date ("Y-m-d", strtotime("+1 day", strtotime($start_date))); 

      $count = 0; 

      foreach($offers as $offer) { 
       if(strtotime($offer->start) == strtotime($start_date)) { 
        $count++; 
       } 
      } 

      if($count == 0) { 
       Maxoffer::create(['title' => null, 'price' => '100', 'start' => $start_date, 'user_id' => 8 ]); 
      } 

     } 

     // do some code to update $offers variable before you return it 

     return $offers; 
    } 
+0

hm, nein: Whoops, sieht aus wie etwas schief gelaufen ist. 1/1 InvalidArgumentException in Carbon.php Zeile 425: Das Trennsymbol konnte nicht gefunden werden Unerwartete Daten gefunden. Unerwartete Daten gefunden. Daten fehlen – Andrew