2017-02-17 4 views
1

私は仕事を提出するフォームを持っています。フォームには、フィールドを複製する機能を備えた追加情報を追加するセクションがあります。

IDを持つジョブテーブルにリンクされている私のタスクテーブルにレコードを保存する際に問題が発生しています。

ユーザーがフィールドをクローンすると、データをループしてデータベースに保存する際に問題が発生します。

スペースを節約するために、すべての検証を省略しています。ここに私の店の方法は、私のJobControllerである:

  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 
    ) 

) 

これは私が結果として取得したいと思いです:

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

あなたは何の問題がありますか?何かエラーがありますか?現在および期待される結果は何ですか? –

+0

私は$ resultのprint_rを実行したときに結果を得て質問を編集しました。結果を配列キーでグループ化する必要があります。たとえば、1つの配列内に0のインデックスを持つすべてのキー。 @ jedrzej.kurylo – Marco

答えて

0

それは私が$結果は、もともとなど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のコレクション内の方法があるかもしれないということですここで助けてください。

希望すると助かります:)

関連する問題