Как сохранить массив данных, поступающих из вида в Laravel - PullRequest
0 голосов
/ 20 апреля 2019

Это данные, когда пользователь отправляет форму:

POST Data

_token  
"JNDt8WC6kVbvrSdFTKSGnHsfzTuIsbthslf5Gqjs"

invoice_number  
"15"

dateofbill  
"2019-04-19"

customer_name   
"praveen kumar tiwari"

customer_mobile 
"8924001750"

sno 
array:3 [▼
  0 => "1"
  1 => "2"
  2 => "3"
]

item_name   
array:3 [▼
  0 => "jeans"
  1 => "shirt"
  2 => "lower"
]

qty 
array:3 [▼
  0 => "2"
  1 => "3"
  2 => "2"
]

price   
array:3 [▼
  0 => "20000"
  1 => "232"
  2 => "12"
]

gst 
array:3 [▼
  0 => "1200"
  1 => "22"
  2 => "12"
]

discount    
array:3 [▼
  0 => "100"
  1 => "23"
  2 => "12"
]

textarea    
""

Я не могу сохранить эти данные в таблице. я пытаюсь с для цикла, но получаю ошибку "Неопределенное смещение: 3".

Код внутри контроллера

for($i=0;$i<=count($request['sno']);$i++)
        {
            $invoice = new Invoice;
            $invoice->sendbill_id=$bill->id;
            $invoice->sno=$request['sno'][$i];
            $invoice->item_name=$request->item_name[$i];
            $invoice->qty=$request->qty[$i];
            $invoice->price=$request->price[$i];
            $invoice->gst=$request->gst[$i];
            $invoice->discount=$request->discount[$i];
            $invoice->save();
 }

я хочу сохранить эти 3 значения, поступающие в виде массива (sno, item_name, qty, price, gst, discount) в 3 разных рядах

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Вы должны попытаться использовать laravel eloquent, чтобы сохранить его.Вот пример, который вы можете проверить. Laravel: много-много вставок

0 голосов
/ 20 апреля 2019

Ваша проблема действительно в вашем цикле: for($i=0;$i<=count($request['sno']);$i++). Чтобы быть конкретным, это прямо здесь <=:

$i<=count()
  ^^


Посмотрите на ваш массив:

[
  0 => "1"
  1 => "2"
  2 => "3"
]

Вы получили 3 объектов. Следовательно, count($request['sno']) вернет 3, поскольку функция count() не начинает отсчет с 0!
Однако при вызове индекса (например, $request['sno'][1]) не возвращает первый объект (0 => "1"), а второй (1 => "2"). Я думаю, вы видите, куда я иду.

Поскольку цикл будет продолжаться до тех пор, пока $i не будет равен 3, цикл будет выполнен 4 раза. В последний раз (где $i == 3) вы пытаетесь извлечь 4-й элемент из вашего массива, который не существует, поэтому появляется сообщение об ошибке: Undefined offset: 3.

Чтобы решить эту проблему, просто измените это

$i<=count()
  ^^

до <. Цикл будет выполняться только в том случае, если $i еще меньше, чем 3. Это тот случай, если $i == 2. Сообщение об ошибке не появится.

Я не хочу ни на что нападать или причинять вам боль, но мне кажется, что вы относительно новичок в PHP. Конечно, это не позор, но мне интересно, подходит ли вам такой огромный каркас, как Laravel. Сначала основы, затем продвинутые.
Но это всего лишь небольшой комментарий и совет от меня.

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