【问题标题】:Laravel - Looping thought $request and inserting dataLaravel - 循环思想 $request 和插入数据
【发布时间】:2017-07-06 22:52:31
【问题描述】:

我有一个提交工作的表单,表单中有一个部分,您可以在其中添加额外信息,并具有克隆字段的功能。

我在将记录保存到我的任务表时遇到问题,该表链接到带有 ID 的作业表。

当用户克隆字段时,我无法遍历数据并将其保存在数据库中。

我正在削减所有验证以节省空间。这是我在 JobController 中的 store 方法:

           public function store(Request $request)
                {
                    /*JOB*/
                    $job = new Job();
                    $job->title=$request->title;
                    $job->client_id=$request->client_id;
                    $job->user_id=$request->user_id;
                    $job-> number =$request->number;
                    $job->ponumber =$request->ponumber;
                    $job->status =$request->status;
                    $job->invoicestatus =$request->invoicestatus;
                    $job->save();
                    $lastInsertedId = $job->id;
                    /*TASK*/
                    $task = new Task();
                    $task->job_id = $lastInsertedId;
                    $task->description = $request->description;
                    $task->supplier_hs= $request->supplier_hs;
                    $task->quote_hs= $request->quote_hs;
                    $task->quote_hs_date= $request->quote_hs_date;
                    $task->quote_client= $request->quote_client;
                    $task->quote_client_date=   $request->quote_client_date;
                    $task->readytoinvoice= $request->readytoinvoice;
                    $task->invoiced= $request->invoiced;
                    $result = $task->getAttributes();
                    foreach($result as$key=>$t){
                        $i = 0;
                        foreach($result[$key] as $value){
                            echo"<pre>";
                            print_r($value);
                            echo"</pre>";
                            $i++;
                            echo "counter: " .$i;
                        }

                    }
                    //$task->save();


                    //return redirect('jobs')->with(array('feedback'=>'New Job created successfully','last_insert_id' => $job));


                }

这是我从 $result 得到的输出:

       Array
(
[description] => Array
    (
        [0] => job 1
        [1] => Job 2
        [2] => job 3
    )

[supplier_hs] => Array
    (
        [0] => 1000
        [1] => 200
        [2] => 3000
    )

[quote_hs] => Array
    (
        [0] => 1000
        [1] => 2000
        [2] => 300
    )

[quote_hs_date] => Array
    (
        [0] => 2017-02-15 11:50:07
        [1] => 2017-02-01 00:00:00
        [2] => 2017-02-15 11:50:07
    )

[quote_client] => Array
    (
        [0] => 1000
        [1] => 2000
        [2] => 3000
    )

[quote_client_date] => Array
    (
        [0] => 2017-02-15 11:50:07
        [1] => 2017-02-01 00:00:00
        [2] => 2017-02-15 11:50:07
    )

[readytoinvoice] => Array
    (
        [0] => 1
        [1] => 1
        [2] => 1
    )

[invoiced] => Array
    (
        [0] => 1
        [1] => 1
        [2] => 1
    )

)

这是我想要得到的结果:

        Array
        (
            [0] => Array
                (
                    [description] => job 1
                    [supplier_hs]=> Job 2
                    [quote_hs] => job 3
                    [quote_hs_date] => 1000
                    [quote_client] => 2000
                    [quote_client_date] => 2017-02-15 11:50:07
                    [readytoinvoice] => 1
                    [invoiced] => 1
                ),
            [1] => Array
            (
                [description] => job 1
                [supplier_hs]=> Job 2
                [quote_hs] => job 3
                [quote_hs_date] => 1000
                [quote_client] => 2000
                [quote_client_date] => 2017-02-15 11:50:07
                [readytoinvoice] => 1
                [invoiced] => 1
            ),
            [2] => Array
            (
                [description] => job 1
                [supplier_hs]=> Job 2
                [quote_hs] => job 3
                [quote_hs_date] => 1000
                [quote_client] => 2000
                [quote_client_date] => 2017-02-15 11:50:07
                [readytoinvoice] => 1
                [invoiced] => 1
            )
        )

我已经以这种方式工作了。我不确定这是实现这一目标的最佳方法,但这是我的代码:

$tasks['tasks'] = array() ;
    foreach($result as $key=>$value){
        $i = 0;
        if(!is_null($key)){
            foreach($result as $value){
                if(!is_null($value)){
                    $index = array_keys($value);
                    foreach($index as $ind){
                        if($ind == $i){
                            $tasks['tasks'][$i]['job_id'] = $lastInsertedId;
                            $tasks['tasks'][$i][$key] = $result[$key][$i];
                        }
                    }
                }
                $i++;
            }
        }
    }

【问题讨论】:

  • 你有什么“麻烦”?你有任何错误吗?目前和预期的结果是什么?
  • 我已经编辑了问题,结果是我在 $result 上执行 print_r 时得到的结果。我需要按数组键对结果进行分组。例如,一个数组中索引为 0 的所有键。 @jedrzej.kurylo

标签: jquery laravel foreach insert clone


【解决方案1】:

如果我理解 $result 最初是一个数组数组(每个“标题”,例如quote_client 等,那么使用它可能会有所帮助:

$finally = [];
$width = 0;
$keys = array_keys($result);
foreach ($keys as $kkk){
    foreach($result as $res_key => $res_value){                                                                                                                                                                                                      
        foreach($res_value as $key => $value)                                                                                                                                                                                       
        {                                                                                                                                                                                                                           
            $finally[$width][$res_key] = $value;                                                                                                                                                                                                        
        }                                                                                                                                                                                                                           
    }
    $width ++;
}

PS:当然这个方法有一些嵌套循环,所以效率不能保证。但是我的想法是,laravel 的集合中可能有一种方法可能对这里有所帮助。

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多