我在POST的'Cylinders'数据数组中得到一个数组:
";0.00;100;0.00"
现在,键内的字段:系列,类型,入场等都不会改变,但这些键内的信息会发生变化,我的意思是那里甚至可能有15个项目。
最后我需要保存到数据库:
Array
(
[serie] => Array
(
[0] => 1234
[1] => 3545
)
[seriesap] => Array
(
[0] => 1234234
[1] => 345345
)
[type] => Array
(
[0] => 4546
[1] => csdfwe
)
[admission] => Array
(
[0] => 04-05-2015
[1] => 04-05-2015
)
[invoice] => Array
(
[0] => fei76867
[1] => feiasodjf
)
)
如何完成此任务并保存所有气瓶?
我已经尝试了所有我能想到的东西似乎都没有用。
/ 修改 /
这就是我到目前为止所做的事情:
$cylinder = new Cylinder();
$cylinder->serie = ??;
$cylinder->seriesap = ??;
$cylinder->type = ??;
$cylinder->admission = ??;
$cylinder->invoice = ??;
$cylinder->save
但感觉很丑,所有这些豁免都不对。如果你问我,那会很脏。
答案 0 :(得分:6)
首先,您需要将输入数据转换为另一种格式:
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
$sqlData = array();
while($num_elements < count($cyldata['serie'])){
$sqlData[] = array(
'serie' => $cyldata['serie'][$num_elements],
'type' => $cyldata['type'][$num_elements],
'admission' => $cyldata['admission'][$num_elements],
'seriesap' => $cyldata['seriesap'][$num_elements],
'invoice' => $cyldata['invoice'][$num_elements], // you miss this field, aren't you?
'created_at' => Carbon\Carbon::now(), // only if your table has this column
'updated_at' => Carbon\Carbon::now(), // only if your table has this column
);
$num_elements++;
}
其次,使用Fluent查询构建器执行批量插入:
DB::table('table_name')->insert($sqlData);
注意:如果您的表中包含这些字段,则created_at
和updated_at
会显示在此处。使用Eloquent模型时,这些字段会自动更新。但是,我们不使用Eloquent,因此我们必须手动将值分配给这些字段。
答案 1 :(得分:2)
我不知道是什么迫使您使用$_POST
全局数组来接收用户的数据。
也许,这就是你想要的。
/**
* Store the form inputs in the table
*
* @param Request $request
*/
public function store( Request $request ) {
$data = Input::get();
for($i = 0; $i < count($data['serie']); $i++) {
$c = new Cylinder();
$c->serie = $data['serie'][$i];
$c->type = $data['type'][$i];
$c->admission = $data['admission'][$i];
$c->seriesap = $data['seriesap'][$i];
$c->save(); // fixed typo
}
}
答案 2 :(得分:1)
因为您有一个数组要将数据插入数据库,所以您可以尝试模型中的create
方法:
Cylinder::create($array);
但它实际上需要数组的key
为数据库中的field_name
。或者您可以使用查询构建器执行此操作:
DB::table('table_name')->insert($array);
再次需要将数组的key
设置为数据库中的field_name
。