Невозможно сохранить Json объект в базе данных Laravel - PullRequest
0 голосов
/ 02 марта 2020

Я создаю таблицу расчетов после создания на кнопке биллинга, она создает JSON объект данных каждого массива ячеек таблицы и отправляет в контроллер через AJAX.

jQuery Код
 $(".bill").click(function() {
  var iname_item=[];
  var qt_item=[];
  var price_item=[];
  var paying_item=[];
  var bal_item=[];

  $('.iname_item').each(function(){
    iname_item.push($(this).text());
  });

  $('.qt_item').each(function(){
    qt_item.push($(this).text());
  });

  $('.price_item').each(function(){
    price_item.push($(this).text());
  });

  $('.paying_item').each(function(){
    paying_item.push($(this).text());
  });

  $('.bal_item').each(function(){
    bal_item.push($(this).text());
  });

  var cn_iname_item=JSON.stringify(iname_item);
  var cn_qt_item=JSON.stringify(qt_item);
  var cn_price_item=JSON.stringify(price_item);
  var cn_paying_item=JSON.stringify(paying_item);
  var cn_bal_item=JSON.stringify(bal_item);                                
  alert(cn_iname_item);

  var datastring="item_iname="+cn_iname_item+"&item_qt="+cn_qt_item+"&item_price="+cn_price_item+"&item_paying="+cn_paying_item+"&item_bal="+cn_bal_item;

  $.ajax({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    type:'POST',
    url:'/billing',
    data:datastring,
    success:function(data){
      console.log(data);
    },
  });
});

Как я могу повторить эти JSON данные и сохранить их в базе данных?

array:5 [
  "item_iname" => "["Oats","Muesli"]"
  "item_qt" => "["2","5"]"
  "item_price" => "["500","300"]"
  "item_paying" => "["500","300"]"
  "item_bal" => "["0","0"]"
]

1 Ответ

0 голосов
/ 02 марта 2020

Несколько методов.

Самый простой:

  • создать текстовый столбец в вашей таблице (пример: атрибут «данные»). Стандартный laravel материал. Я уверен, что вы можете сделать это.
  • ваш код сделает это:
$object = new yourModel();
$object->data = json_encode($array);
$object->save();

Следующий метод, но лучше: приведение атрибутов

  • создайте текстовый столбец в вашей таблице. То же, что и выше.
  • добавить приведение по умолчанию к вашей модели:

protected $ casts = ['data' => 'array'];

  • пусть ваш код сделает это:
$object = new yourModel();
$object->data = $array;
$object->save();

Имейте в виду: это псевдокод, чтобы дать вам представление. Убедитесь, что в вашем приложении указан правильный код.

Дополнительная информация о приведении атрибутов приведена в laravel: laravel Документация о приведении атрибутов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...