Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel资源集合删除我的数组键_Php_Laravel - Fatal编程技术网

Php Laravel资源集合删除我的数组键

Php Laravel资源集合删除我的数组键,php,laravel,Php,Laravel,我有一个资源集合来获取我所有的对话。 因为前端已经(由另一个人)编码,所以我想将所有这些作为对象返回,数据库的对话id作为键,对话对象作为值 但是,当我想转换我从资源集合(使用(object)$array)获得的数组时,它仍然返回一个数组,而不返回我设置的任何键 在我的控制器函数中,我调用: return new DialogueResourceCollection($dialogues); 我的收藏资源如下所示: class DialogueResourceCollection extend

我有一个资源集合来获取我所有的对话。 因为前端已经(由另一个人)编码,所以我想将所有这些作为对象返回,数据库的对话id作为键,对话对象作为值

但是,当我想转换我从资源集合(使用(object)$array)获得的数组时,它仍然返回一个数组,而不返回我设置的任何键

在我的控制器函数中,我调用:

return new DialogueResourceCollection($dialogues);
我的收藏资源如下所示:

class DialogueResourceCollection extends ResourceCollection
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request)
    {
       $array = [];
        for ($i = 0; $i < sizeof($this); $i++) {
            $j = $this[$i]->dialogue_id;
            $array[$j] = $this[$i];
        }

        return $array;
    }
}
我想要的是:

{
 "34" :   {
        "dialogue_id": 34,
        "text": "example text"
    }, 
...
}

从路由返回资源集合时,Laravel会重置集合的键,使它们以简单的数字顺序排列。但是,您可以向资源类添加一个preserveKeys属性,指示是否应保留集合键。把这个放在你的代码上面

public $preserveKeys = true;
在这里读docss

public $preserveKeys = true;