PHP 如何使用 laravel 5 将数据从数组保存到 mysql

标签 php mysql arrays laravel laravel-5

我从 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_atupdated_at 如果您的表有这些字段,则会出现在这里。使用 Eloquent 模型时,这些字段会自动更新。但是,我们没有使用 Eloquent,因此我们必须手动为这些字段分配值。

关于PHP 如何使用 laravel 5 将数据从数组保存到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496740/

相关文章:

php - 在 PHP 中,将配置参数加载到应用程序变量中的正确方法是什么?

PHP 问题 : password_hash function is not able to generate a salt

php - 在mysql中,使用UNIQUE键与NORMAL键在速度方面具有相同的效果吗?

java - 将二维数组添加到一维数组

java - 查找数组中第二大偶数整数的有效方法

php - Joomla 包括数据库功能

javascript - Magento Custom 模块用于 T 恤设计定制

java - 是否需要安装mysql才能在另一台计算机本地保存和检索sql数据?

MySQL通过从另一列中选择一个值来计算一列中的值

php将json数组合并为一个数组