用户提交表单时的数据:
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个不同的行中
答案 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