2017-08-06 16 views
1

次のメソッドは、別の配列('data')とObject(雄弁なクエリの結果)を持つ配列を返すためのものです。Laravel 5.4配列ではないオブジェクトとして返す

しかし、2つのオブジェクトを含む配列を返しています。 $ dataは、オブジェクトの配列ではなく、何らかの形で複数の子オブジェクトを持つオブジェクトに変換されます。 return文の前のdd($data)は、それが実際にオブジェクトの配列であることを示していることに注意してください。どういうわけか、応答を処理するLaravelミドルウェアが代わりにオブジェクトとしてこれを返すと思います...

これを回避する方法はありますか?

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

**その少し漠然とした、**複数の子、オブジェクトとオブジェクトに変換、あなたは 'dd'結果を添付することができ期待される結果は? –

答えて

1

リターン文をexcuting前、またはそれでこれを試してみてください:

array_values($data); 
+0

それはトリックをしました - ありがとう! – mdobrenko

関連する問題