Php 正确格式的laravel数据结果集

Php 正确格式的laravel数据结果集,php,json,laravel,Php,Json,Laravel,我正在使用laravel制作一个API,用于查询数据库并显示一个简单的输出。现在我的问题是这样的: $name = new TableName() ; //An object which is storing tablename $result=DB::table($name->getMyTableName()) // Getting the tablename ->select() ->where('id','=',1)->orWhere

我正在使用laravel制作一个API,用于查询数据库并显示一个简单的输出。现在我的问题是这样的:

$name = new TableName() ; //An object which is storing tablename
$result=DB::table($name->getMyTableName()) // Getting the tablename
        ->select()
        ->where('id','=',1)->orWhere('id','=',2)
        ->get();
[
{
"id": "1",
"question": "This is",
"question_main": "sample1",
"option_1": "opt_1",
"option_2": "opt_1",
"option_3": "opt_1",
"option_4": "opt_1",
},
{
"id": "2",
"question": "This is",
"question_main": "sample2",
"option_1": "opt_1",
"option_2": "opt_2",
"option_3": "opt_3",
"option_4": "opt_4",

}
]
现在,这将获取id为1和2的两条记录,当我通过控制器传递它们时,json输出如下:

$name = new TableName() ; //An object which is storing tablename
$result=DB::table($name->getMyTableName()) // Getting the tablename
        ->select()
        ->where('id','=',1)->orWhere('id','=',2)
        ->get();
[
{
"id": "1",
"question": "This is",
"question_main": "sample1",
"option_1": "opt_1",
"option_2": "opt_1",
"option_3": "opt_1",
"option_4": "opt_1",
},
{
"id": "2",
"question": "This is",
"question_main": "sample2",
"option_1": "opt_1",
"option_2": "opt_2",
"option_3": "opt_3",
"option_4": "opt_4",

}
]
现在我想要的不是选项,而是这样的:

$name = new TableName() ; //An object which is storing tablename
$result=DB::table($name->getMyTableName()) // Getting the tablename
        ->select()
        ->where('id','=',1)->orWhere('id','=',2)
        ->get();
[
{
"id": "1",
"question": "This is",
"question_main": "sample1",
"option_1": "opt_1",
"option_2": "opt_1",
"option_3": "opt_1",
"option_4": "opt_1",
},
{
"id": "2",
"question": "This is",
"question_main": "sample2",
"option_1": "opt_1",
"option_2": "opt_2",
"option_3": "opt_3",
"option_4": "opt_4",

}
]
选项:

{ 
            1=>"opt_1",
            2=>"opt_2",
            3=>"opt_3",
            4=>"opt_4",
 } 
现在我尝试的是:

foreach ($result as $results)
        {
            $final_result= array_add($final_result, 'id', $results->id);
            $final_result= array_add($final_result, 'question', $results->question);
            $final_result= array_add($final_result, 'question_main', $results->question_main);
            $final_result= array_add($final_result, 'options', array(
                [
                    1 => $results->option_1,
                    2 => $results->option_2,
                    3 => $results->option_3,
                    4 => $results->option_4,
                ]
            ));

        }
        return json_encode($final_result,JSON_PRETTY_PRINT);

不过,这基本上解决了这个问题,因为您可能已经发现键值对可以有唯一的键,所以它只存储id=2(后者)。我很困惑接下来该做什么。我尝试了多维数组,但我认为我无法正确理解这个概念。任何建议,请提前感谢

您可以使用foreach中的键执行以下操作:

$final_result = [];
foreach ($result as $key => $results)
{
    $final_result[$key] = [
        'id' => $results->id,
        'question' => $results->question,
        'question_main' => $results->question_main,
        'options' => [
            1 => $results->option_1,
            2 => $results->option_2,
            3 => $results->option_3,
            4 => $results->option_4
        ]
    ];

}
return json_encode($final_result,JSON_PRETTY_PRINT);

这将达到预期效果

    $arrayToBePrinted = [];
    foreach ($result as $results)
    {
        $final_result= array_add($final_result, 'id', $results->id);
        $final_result= array_add($final_result, 'question', $results->question);
        $final_result= array_add($final_result, 'question_main', $results->question_main);
        $final_result= array_add($final_result, 'options', array(
            [
                1 => $results->option_1,
                2 => $results->option_2,
                3 => $results->option_3,
                4 => $results->option_4,
            ]
        ));

     $arrayToBePrinted[] = $final_result;

    }
    return json_encode($arrayToBePrinted,JSON_PRETTY_PRINT);

这是当场的。非常感谢:)您在我被卡住的地方犯了同样的错误,$ARRAYTOBEPRINT将只存储最后一个id,并只显示两次,无论如何,感谢您的帮助:)
$ARRAYTOBEPRINT[]
将向其追加
$final\u result
。因此,它应该按照伊万卡托罗娃所说的那样起作用。它是附加的,所以应该可以工作。我做了检查,它向我显示了相同的东西两次,我仍然会再次检查,并会让你知道。