为循环PHP插入错误的值/覆盖值

时间:2015-01-06 10:00:25

标签: php for-loop laravel

很高兴我想在数据库中同时保存项目和任务。但这对我来说并不顺利。让我为你说明实际发生的事情:

在保存项目和任务之前添加项目和任务的屏幕截图:

link:http://i.imgur.com/ZWgpOtQ.png

保存项目和任务后的屏幕截图:

link:http://i.imgur.com/JybgsVN.png

正如您所看到的那样,问题是它正在覆盖值。

以下是我的数组如何显示的截图:

link:http://i.imgur.com/xXCtobd.png

以下是我用于将项目和任务插入订单的代码:

Orderproject.php:

static public function storeOrderProjects($inputArr )
{   

//die('xx inputArr val: ' .print_r($inputArr));

        for($i=0;$i< count( $inputArr['id_project']);$i++ ){

            $data = array(
                        'id_order' => $inputArr['id'],
                        'id_project' => $inputArr['id_project'][$i],
                        'hour' => $inputArr['hour'][$i],
                        'hourprice' => $inputArr['hour_salary'][$i],
                        'totalprice' => $inputArr['total_salary'][$i],
                        'createdBy' => Auth::user()->id
                    ); 

            Orderproject::create($data);

        }

}

Ordertask.php:

static public function storeOrderTasks($inputArr )
{   

//die('xx inputArr val: ' .print_r($inputArr));

        for($i=0;$i< count( $inputArr['id_task']);$i++ ){

            $data = array(
                        'id_order' => $inputArr['id'],
                        'id_task' => $inputArr['id_task'][$i],
                        'hour' => $inputArr['hour'][$i],
                        'hourprice' => $inputArr['hour_salary'][$i],
                        'totalprice' => $inputArr['total_salary'][$i],
                        'createdBy' => Auth::user()->id
                    ); 

            Ordertask::create($data);

        }
}

我知道问题是什么,在for循环中,id_project与元素hour和hour_salary的值“5,5”在同一个索引上。我想我真的很亲密,但仍然不知道如何解决这个问题。有人可以帮帮我吗?无论如何,谢谢你的回答。

2 个答案:

答案 0 :(得分:1)

$inputArr['id_project']只有一个值,$inputArr['id_task']中只有一个值,因此storeOrderProjectsstoreOrderTasks只取第一个值,忽略第二个值。使用给定的结构你可能应该遍历hour,但是,如果可能的话,你应该考虑使用一个更好地反映业务逻辑的数组结构。

答案 1 :(得分:0)

嗯,你正在计算一个长度为1的数组,所以你只需通过一次$i等于0的循环,因此你只需要插入其他数组的第一个值。问题是您的小时和小时工资数组与id_taskid_project数组的长度相同。