Создание ассоциированного массива из Laravel db

#php #arrays #laravel #api #associate

#php #массивы #laravel #API #ассоциировать

Вопрос:

На данный момент я создаю приложение с помощью flutter, но мой контроллер Laravel api не возвращает соответствующий многомерный массив. Я хотел бы иметь {[0]=> array,[1] =>array и т.д.}. Если кто-нибудь знает исправление для этого, было бы высоко оценено

 public function index()
    {
        $payments = Payment::all();

        return $payments;
    }
  

И он возвращает это:

 [
    {
        "id": 1,
        "description": "test",
        "price": "9.00",
        "currency": "EUR",
        "status": "open",
        "deleted_at": null,
        "created_at": "2020-08-10T09:50:52.000000Z",
        "updated_at": "2020-08-10T09:50:52.000000Z"
    },
    {
        "id": 2,
        "description": "test",
        "price": "3.00",
        "currency": "USD",
        "status": "open",
        "deleted_at": null,
        "created_at": "2020-08-13T19:06:23.000000Z",
        "updated_at": "2020-08-13T19:06:23.000000Z"
    }
]
  

Я много пробовал, это помогло мне лучше всего, но потом я получил 1: {ARRAY}

код, который я пробовал:

 public function index()
    {
        $data = [];
        $payments = Payment::all();
        $id=1;
        foreach($payments as $payment){
            array_push($data,[$id=>$payment]);
            $id  ;
        }
        return $data;
    }

  

Результат:

 [
    {
        "1": {
            "id": 1,
            "description": "test",
            "price": "9.00",
            "currency": "EUR",
            "status": "open",
            "deleted_at": null,
            "created_at": "2020-08-10T09:50:52.000000Z",
            "updated_at": "2020-08-10T09:50:52.000000Z"
        }
    },
    {
        "2": {
            "id": 2,
            "description": "test",
            "price": "3.00",
            "currency": "USD",
            "status": "open",
            "deleted_at": null,
            "created_at": "2020-08-13T19:06:23.000000Z",
            "updated_at": "2020-08-13T19:06:23.000000Z"
        }
    }
    
]
  

Я хотел бы иметь:

 {
1:{
   "message":"test",
   "price":"9"
   "currency":"EUR"
  },
2:{
   "message":"test",
   "price":"9"
   "currency":"EUR"
}
}
  

Комментарии:

1. пожалуйста, докажите код, который пытался

2. Я предоставил 2 кода, которые я пробовал, но ничего не сработало

Ответ №1:

Попробуйте также это

   public function index(){
    $payments = Payment::all();
    return response()->json([$payments]);
 }
  

Комментарии:

1. это возвращает то же самое с дополнительным [] в начале

2. какой формат JSON вам нужен? [ { «коды»:[], «имена»:[] } ] или любой другой?

3. мне нужен индексированный многомерный массив, поэтому [0] =>{«id»: 1, «description»: «test», «price»: «9.00», «currency»: «EUR», «status»: «open», «deleted_at»: null, «created_at»: «2020-08-10T09:50:52.000000Z», «updated_at»: «2020-08-10T09:50:52.000000Z», «updated_at»: «2020-08-10T09:50 :52.000000Z» }

Ответ №2:

Попробуйте этот

 public function index()
{
    $payments = Payment::get()->toArray();

    return $payments;
}
  

Комментарии:

1. К сожалению, это возвращает то же самое