猿问

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

我有一个资源集合来获取我所有的对话。因为前端已经编码(由另一个人),所以我想将所有这些作为对象返回,数据库的 dialog_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;

    }

}

我得到什么:


[

    {

        "dialogue_id": 1,

        "text": "example text"

    }, 

...

我想得到什么:


{

 "34" :   {

        "dialogue_id": 34,

        "text": "example text"

    }, 

...

}


宝慕林4294392
浏览 213回答 1
1回答

慕村9548890

当从路由返回资源集合时,Laravel 会重置集合的键,以便它们以简单的数字顺序排列。但是,您可以向资源类添加一个 preserveKeys 属性,指示是否应保留集合键。把它放在你的代码上面。public&nbsp;$preserveKeys&nbsp;=&nbsp;true;在此处阅读文档保留密钥
随时随地看视频慕课网APP
我要回答