2017-02-17 4 views
1

양식을 제출하면 양식을 사용하여 필드를 복제하는 기능과 함께 추가 정보를 추가 할 수있는 섹션이 있습니다.

ID가있는 작업 테이블에 연결된 내 작업 테이블에 레코드를 저장하는 데 문제가 있습니다.

사용자가 필드를 복제하면 데이터가 반복되어 데이터베이스에 저장되는 데 문제가 있습니다.

공간을 절약하기 위해 모든 유효성 검사를 절단하고 있습니다.

 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 
      ) 
     ) 
: 나는 $ 결과에서 얻을 출력

  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)); 


       } 

이있다 :

 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 
    ) 

) 

이 내가 결과로 얻을 싶은 것이 여기에 내 JobController 내 저장 방법은

저는이 방법으로 작업하고 있습니다. 그것이 내가 그 $ 결과가 원래 같은 quote_client 각각의 '제목'배열의 배열입니다 (이해 어떤 경우

$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++; 
      } 
     } 
    } 
+0

"문제가 있습니까? 오류가 있습니까? 현재와 ​​예상되는 결과는 무엇입니까? –

+0

$ 결과에서 print_r을 수행 할 때 얻은 결과로 질문을 편집했습니다. 결과를 배열 키로 그룹화해야합니다. 예를 들어 하나의 배열에 0 개의 인덱스가있는 모든 키. @ jedrzej.kurylo – Marco

답변

0

: 나는 이것을 달성하는 가장 좋은 방법이지만, 여기에 내 코드입니다 정말 확실하지 않다 등, 다음 도움이 될 수있는이 사용 :

$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의 수집의 방법이 될 수 있다는 것입니다 그 수도 도움이 필요합니다.

희망 하시겠습니까?