嗨,很高兴我想同时在数据库中保存项目和任务。但这对我来说并不顺利。让我为您说明实际发生的事情:
在保存项目和任务之前添加项目的屏幕截图:
链接: 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']
中,因此storeOrderProjects
和storeOrderTasks
都只取第一个值,忽略第二个值。使用给定的结构,您可能应该遍历hour
,尽管如果可能的话,您应该考虑使用更好地反映业务逻辑的数组结构。
好吧,
您正在计算一个长度为 1 的数组,因此您只在 $i
等于 0 的情况下遍历一次循环,因此您只插入其他数组的第一个值。问题是您的小时和小时工资数组的长度与您的id_task
和id_project
数组相同。