【问题标题】:Laravel 5.4 Return as array not objectLaravel 5.4作为数组而不是对象返回
【发布时间】:2018-11-10 15:50:45
【问题描述】:

以下方法旨在返回一个包含另一个数组'data' 和一个对象(一些雄辩查询的结果)的数组。

然而,它返回一个包含两个对象的数组; $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)];
}

【问题讨论】:

  • 转换为具有多个子对象的对象,有点含糊,能否附上dd结果和预期结果?

标签: laravel laravel-5.4


【解决方案1】:

在执行返回语句之前或在它里面试试这个:

array_values($data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 2018-12-07
    • 2021-05-20
    • 2020-01-10
    • 1970-01-01
    • 2011-10-06
    相关资源
    最近更新 更多