2017-08-06 2 views
1

Die folgende Methode soll ein Array mit einem anderen Array, 'data' und einem Objekt (das Ergebnis einer eloquenten Abfrage) zurückgeben.Laravel 5.4 Rückgabe als Array nicht Objekt

Es gibt jedoch ein Array mit zwei Objekten zurück; $ data wird irgendwie in ein Objekt mit mehreren untergeordneten Objekten konvertiert, anstatt ein Array von Objekten zu sein. Es sollte angemerkt werden, dass ein dd($data) vor der Rückgabeanweisung zeigt, dass es sich tatsächlich um ein Array von Objekten handelt. Ich denke, dass die Laravel-Middleware, die die Antwort verarbeitet, diese als Objekt zurückgibt ...

Irgendeine Idee, wie man das umgeht?

public function getTestData($id) { 
    $participants = Participant::where('test_id', $id)->with('testRecords')->get(); 
    $finalRecordValue = TestRecord::where('test_id', $id)->orderBy('created_at', 'desc')->first(); 

    $data = []; 

    foreach ($participants as $participant) { 
     foreach ($participant->testRecords as $testRecord) { 
      if (!array_key_exists((int)$testRecord->capture_timestamp, $data)) { 
       $data[$testRecord->capture_timestamp] = (object)[ 
        'category' => $testRecord->capture_timestamp, 
        'value' . "_" . $participant->id => $testRecord->score 
       ]; 
      } else { 
       $data[$testRecord->capture_timestamp]->{"value" . "_" . $participant->id} = $testRecord->score; 
      } 
     } 
    } 

    return [$data, Auth::user()->tests()->findOrFail($id)]; 
} 
+0

** in ein Objekt umgewandelt mit mehreren Kind-Objekte **, die ein bisschen vage, könnten Sie befestigen die 'dd' Ergebnis und erwartetes Ergebnis? –

Antwort

1

die Sie interessieren vor Executing Rückkehr Satz oder in es:

array_values($data); 
+0

Das hat den Trick - danke! – mdobrenko