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


Inserting wrong values/overwriting values due for loop PHP

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

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

链接: https://i.stack.imgur.com/5l9Iv.png

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

链接: https://i.stack.imgur.com/ztHHo.png

如您所见,问题是它正在覆盖值。

以下是我的数组外观的屏幕截图:

链接: https://i.stack.imgur.com/UfF6S.png

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

订单项目.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);
        }
}

订单任务.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_salary的值"5、5"位于同一索引上。我想我真的很接近,但仍然不知道如何解决这个问题。请问有人可以帮助我吗?无论如何,感谢您的回答。

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

好吧,

您正在计算一个长度为 1 的数组,因此您只在 $i 等于 0 的情况下遍历一次循环,因此您只插入其他数组的第一个值。问题是您的小时和小时工资数组的长度与您的id_taskid_project数组相同。