Массив в строку в данных Laravel Ajax - PullRequest
0 голосов
/ 28 ноября 2018

Я отправляю свои данные на контроллер через Ajax, но на бэкэнде я получаю Array to string conversion.

Контроллер

<?php

public function updateimages(Request $request){
    $updateDetails=array(
        'image_alt' => $request->get('image_alt')
    );

    $updateIds=array(
        'id' => $request->get('id')
    );

    $images = DB::table('photos')
        ->where([$updateIds])
        ->update([$updateDetails]);

    return response()->json(['updated' => $images], 200);
}

Ajax

<script type="text/javascript">
  $(document).ready(function() {
      $(".SaveImage").on('click', function(e) {
          e.preventDefault();
          e.stopPropagation();

          var idmess= [];
          $(".photohe").each(function(){
            idmess.push($(this).val());
          });

          var image_alt= [];
          $(".image_alt").each(function(){
            image_alt.push($(this).val());
          });

          console.log(idmess);
          console.log(image_alt);
          $.ajax({
              url: '{{ url('admin/savemulti') }}',
              type: 'POST',
              dataType: "JSON",
              data: {
                  "id": idmess,
                  "image_alt": image_alt,
                  "_method": 'POST',
                  "_token": "{{ csrf_token() }}",
              },
              success:function(data) {
                var message = "Image Updated successfully!"
                $('.saved').append(message);
              }
          });
      });
  });
</script>

Вот как мой контроллер dd получает данные:

array:4 [
  "id" => array:2 [
    0 => "1045"
    1 => "1046"
  ]
  "image_alt" => array:2 [
    0 => "mage 1"
    1 => "image 2"
  ]
  "_method" => "POST"
  "_token" => "SParC5rwYy0KLLhwa0km7fcZvodSqrzhvyqZUqk3"
]

Он должен обновлять его как:

1045 = mage 1
1046 = image 2

Есть идеи как это исправить?

1 Ответ

0 голосов
/ 28 ноября 2018

Вы не можете делать несколько обновлений так, как вы делаете в приведенном выше коде.Вы добавляете идентификаторы и данные, которые будут обновляться отдельно в двух массивах.

Вы должны изменить свой код примерно так:

public function updateimages(Request $request){
    $ids = $request->get('id');
    $updateImages = $request->get('image_alt');

    foreach($ids as $key => $value){
        DB::table('photos')
          ->where('id',$value)
          ->update(['image_alt'=>$updateImages[$key]]);
    }

    return DB::table('photos')->whereIn('id',ids)->get();
}
...