我从 POST 获取“圆柱体”数据数组中的一个数组:
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
)
)
现在,键内的字段:serie、type、admission 等不会改变,但这些键内的信息会发生变化,我的意思是那里甚至可能有 15 个项目。
最后我需要保存到数据库:
$cylinder = new Cylinder();
$cylinder->serie = ??;
$cylinder->seriesap = ??;
$cylinder->type = ??;
$cylinder->admission = ??;
$cylinder->invoice = ??;
$cylinder->save
我怎样才能完成这个任务并保存所有的气瓶?
我已经尝试了所有我认为没有任何效果的 foreach。
/编辑/
这是我目前所做的:
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
while($num_elements < count($cyldata['serie'])){
$cylinder = new Cylinder();
$cylinder->serie = $cyldata['serie'][$num_elements];
$cylinder->type = $cyldata['type'][$num_elements];
$cylinder->admission = $cyldata['admission'][$num_elements];
$cylinder->seriesap = $cyldata['seriesap'][$num_elements];
$cylinder->save
$num_elements++;
}
但感觉很难看,所有这些扑救都感觉不对。如果你问我,这是肮脏的解决方案。
最佳答案
首先,您需要将输入数据转换为另一种格式:
$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,因此我们必须手动为这些字段分配值。
关于PHP 如何使用 laravel 5 将数据从数组保存到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496740/