Php 在laravel中存储来自foreach循环的数组
我有一个为特定用户选择数据的函数,然后我想在销售表中插入/创建Php 在laravel中存储来自foreach循环的数组,php,laravel,Php,Laravel,我有一个为特定用户选择数据的函数,然后我想在销售表中插入/创建'sid',pid,qtyremain,qtysold,amountpaid 但是现在当我运行查询时,我得到了下面的错误 数组到字符串的转换 任何人都可以帮助纠正我做错的地方 我的窗体视图刀片 <tbody id="tby"> @foreach($search as $dt) <tr> <td><input type="text" value="{{$dt
'sid',pid,qtyremain,qtysold,amountpaid
但是现在当我运行查询时,我得到了下面的错误
数组到字符串的转换
任何人都可以帮助纠正我做错的地方
我的窗体视图刀片
<tbody id="tby">
@foreach($search as $dt)
<tr>
<td><input type="text" value="{{$dt->items->name}}" readonly="" class="form-control"><input type="hidden" value="{{$dt->items->id}}" name="pid[]"></td>
<td><input name="sprice[]" value="{{$dt->items->Sprice}}" readonly="" class="form-control sprice"> </td>
<td><input type="text" name="qtyload[]" value="{{$dt->qty}}" readonly="" class="form-control qtyload"></td>
<td><input type="text" name="qtyremain[]" class="form-control qtyremain"></td>
<td><input type="text" name="qtysold[]" readonly="" class="form-control qtysold"></td>
<td><input type="text" name="amount[]" readonly="" class="form-control amount"></td>
</tr>
@endforeach
</tbody>
@foreach($dt搜索)
@endforeach
我的控制器
public function store(Request $request)
{
//Start Store.
request()->validate([
'sid' => 'required',
'qtyremain' => 'required',
'amountpaid' => 'required',
]);
for ($i = 1; $i < count($request->pid); $i++)
{
$data[] =[
'sid'=>$request->sid,
'pid'=>$request->pid,
'qtyremain'=>$request->qtyremain,
'qtysold'=>$request->qtysold ,
'amountpaid'=>$request->amountpaid,
];
// dd($data);
}
Sale::insert($data);
return redirect()->back()->with('success', 'Successfully Stored');
// }
}
公共函数存储(请求$Request)
{
//开店。
请求()->验证([
“sid'=>“必需”,
“qtyremain”=>“必需”,
'amountpaid'=>'required',
]);
对于($i=1;$ipid);$i++)
{
$data[]=[
'sid'=>$request->sid,
“pid”=>$request->pid,
'qtyremain'=>$request->qtyremain,
“qtysold”=>$request->qtysold,
'AmountPayed'=>$request->AmountPayed,
];
//dd(数据);
}
销售:插入($数据);
return redirect()->back()->带有('success','Successfully Stored');
// }
}
您的数据是一个数组。因此,您应该迭代并进行插入。所以你可以替换
Sale::insert($data);
与
您的数据是一个数组。因此,您应该迭代并进行插入。所以你可以替换
Sale::insert($data);
与
您正在尝试插入多条记录。但是,您的请求结构如下所示:
[
["sid" => [ "1" ],
"pid" => ["6", "8", "5"],
"qtyremain" => ["2" , "2", "2"],
"qtysold" => ["18", "38", "53" ],
"amountpaid" => "33333"
]
]
发生错误的原因是,Laravel验证无法检查值为数组的字段。如果要检查数组的元素,需要使用*
,执行以下操作:
[
["sid" => [ "1" ],
"pid" => ["6", "8", "5"],
"qtyremain" => ["2" , "2", "2"],
"qtysold" => ["18", "38", "53" ],
"amountpaid" => "33333"
]
]
request()->验证([
'sid.*'=>'必需',
'qtyremain.*'=>'必需',
'amountpaid'=>'required',
]);
但是,,
我建议您可以对输入名称使用sell[$I][pid]
而不是pid[]
因此,您不需要在后端按循环构造结构
@foreach($i=>$dt搜索)
@endforeach
因此,请求结构如下所示:
[
["sid" => [ "1" ],
"pid" => ["6", "8", "5"],
"qtyremain" => ["2" , "2", "2"],
"qtysold" => ["18", "38", "53" ],
"amountpaid" => "33333"
]
]
[“销售”=>[
[“pid”=>“1”、“sid”=>2、“qtyremain”=>12、“qtysold”=>22,“已支付金额”=>23.0],
[“pid”=>“2”,“sid”=>2,“qtyremain”=>15,“qtysold”=>25,“支付金额”=>25.0]
...
]]
和验证此数组的字段并以更快、更清晰的方式插入这些字段:
$data=request()->验证([
'sale.*.sid'=>'required',
'sale.*.qtyremain'=>'required',
'amountpaid'=>'required',
...
]);
$sale=$data['sale'];
$array=collect($sale)->映射(函数($item)使用($data){
$item['amountpaid']=$data['amountpaid'];
返回$item;
})->全部();
销售:插入($数组);
您正在尝试插入多条记录。但是,您的请求结构如下所示:
[
["sid" => [ "1" ],
"pid" => ["6", "8", "5"],
"qtyremain" => ["2" , "2", "2"],
"qtysold" => ["18", "38", "53" ],
"amountpaid" => "33333"
]
]
发生错误的原因是,Laravel验证无法检查值为数组的字段。如果要检查数组的元素,需要使用*
,执行以下操作:
[
["sid" => [ "1" ],
"pid" => ["6", "8", "5"],
"qtyremain" => ["2" , "2", "2"],
"qtysold" => ["18", "38", "53" ],
"amountpaid" => "33333"
]
]
request()->验证([
'sid.*'=>'必需',
'qtyremain.*'=>'必需',
'amountpaid'=>'required',
]);
但是,,
我建议您可以对输入名称使用sell[$I][pid]
而不是pid[]
因此,您不需要在后端按循环构造结构
@foreach($i=>$dt搜索)
@endforeach
因此,请求结构如下所示:
[
["sid" => [ "1" ],
"pid" => ["6", "8", "5"],
"qtyremain" => ["2" , "2", "2"],
"qtysold" => ["18", "38", "53" ],
"amountpaid" => "33333"
]
]
[“销售”=>[
[“pid”=>“1”、“sid”=>2、“qtyremain”=>12、“qtysold”=>22,“已支付金额”=>23.0],
[“pid”=>“2”,“sid”=>2,“qtyremain”=>15,“qtysold”=>25,“支付金额”=>25.0]
...
]]
和验证此数组的字段并以更快、更清晰的方式插入这些字段:
$data=request()->验证([
'sale.*.sid'=>'required',
'sale.*.qtyremain'=>'required',
'amountpaid'=>'required',
...
]);
$sale=$data['sale'];
$array=collect($sale)->映射(函数($item)使用($data){
$item['amountpaid']=$data['amountpaid'];
返回$item;
})->全部();
销售:插入($数组);
错误来自验证。如何@TsaiKogaplz发布表单标签,或发布$request->all()代码>sid、pid、qtyremain、qtysold、已付款金额
数组:1[▼ 0=>数组:5[▼ “sid”=>数组:1[▼ 0=>“1”]“pid”=>数组:3[▼ 0=>“6”1=>“8”2=>“5”]“qtyremain”=>数组:3[▼ 0=>“2”1=>“2”2=>“2”]“qtysold”=>数组:3[▼ 0=>“18”1=>“38”2=>“53”]“amountpaid”=>“33333”]
错误消息“数组到字符串转换”来自PHP本身。它的基本意思是“我期望一个字符串,但我收到了一个数组”。您需要确保要发布的数据是字符串
,而不是数组
。查看您的标记(HTML),您正在使用数组符号命名字段。请从每个HTML标记中删除“[]”,然后重试。错误来自验证。如何@TsaiKogaplz发布表单标签,或发布$request->all()代码>sid、pid、qtyremain、qtysold、已付款金额
数组:1[▼ 0=>数组:5[▼ “sid”=>数组:1[▼ 0=>“1”]“pid”=>数组:3[▼ 0=>“6”1=>“8”2=>“5”]“qtyremain”=>数组:3[▼ 0=>“2”1=>“2”2=>“2”]“qtysold”=>数组:3[▼ 0=>“18”1=>“38”2=>“53”]“amountpaid”=>“33333”]
错误消息“数组到字符串转换”来自PHP本身。它基本上是说“我期待一个字符串,但我收到了