如何在laravel中保存来自视图的数组数据

时间:2019-04-19 22:12:25

标签: laravel

用户提交表单时的数据:

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    
""

我无法将此数据存储到表中。我正在尝试for循环,但收到错误“未定义的偏移量: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,折扣)存储在3个不同的行中

2 个答案:

答案 0 :(得分:2)

您遇到的问题确实是循环:for($i=0;$i<=count($request['sno']);$i++)。 具体来说就是这里<=

$i<=count()
  ^^


看一下您的数组:

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

您总共有3个对象。由于count($request['sno'])函数不会从count()开始计数,因此0将返回3!
但是,调用索引(例如$request['sno'][1])将返回第一个对象(0 => "1"),但返回第二个对象(1 => "2")。我想你知道我要去哪里了。

由于循环将继续进行,直到$i等于3为止,循环将完成4次。在最后一次($i == 3处)尝试从数组中获取第四项,该项不存在,因此弹出错误消息:Undefined offset: 3

要解决此问题,只需更改此

$i<=count()
  ^^

<。仅当$i小于3时才执行循环。如果$i == 2就是这种情况。没有错误消息会弹出。

我不想以任何方式攻击或伤害您,但是在我看来,您相对不熟悉PHP。当然,这并不是遗憾,但是我想知道像Laravel这样的庞大框架是否适合您。首先是基础,然后是高级。
但这只是我的一点评论和提示。

答案 1 :(得分:1)

您应该尝试雄辩地使用laravel进行保存。这是一些示例,您可以检查一下。 Laravel : Many to many insertion