2016-02-26 40 views
1

將數據保存在多行中我正在cakephp中使用每個數據保存多個數據。 我有保存數據會議中它工作正常。 但我在foreach循環中遇到了麻煩。 這裏是控制器保存多個數據:使用foreach cakephp

foreach($currentSessionData as $key): 
        // debug($key); 
        $this->request->data[$table_name]['tutor_name'] = $key['tutor_name']; 
        $this->request->data[$table_name]['area_id'] = $key['area_id']; 

        $this->$table_name->save($this->request->data); 
        endforeach; 

當調試$ currentSessionData我得到陣列,如:

array(
'application_attachment' => '', 
'desc' => '', 
'Post' => array(
    'tutor_name' => 'Muhammad Usman', 
    'tutor_email' => '[email protected]', 
    'tutor_number' => '123123', 
    'tutor_gender' => 'male', 
    'city_id' => '2', 
    'tutor_address' => 'asdasdas', 
    'area_id' => array(
     (int) 0 => '3', 
     (int) 1 => '4' 
    ), 
    'user_id' => '47' 
) 

) 調試($鍵)回報:

array(
'tutor_name' => 'Muhammad Usman', 
'tutor_email' => '[email protected]', 
'tutor_number' => '123123', 
'tutor_gender' => 'male', 
'city_id' => '2', 
'tutor_address' => 'asdasdas', 
'area_id' => array(
    (int) 0 => '3', 
    (int) 1 => '4' 
), 
'user_id' => '47' 

)我寫的時候

$this->request->data[$table_name]['tutor_name'] = $key['tutor_name']; 
$this->request->data[$table_name]['area_id'] = $key['area_id']; 

它給出了非法字符串偏移的錯誤。

如果我只是節省$鍵,如:

foreach($currentSessionData as $key): 
        $this->$table_name->save($key); 
        endforeach; 

       $this->Session->setFlash('Account created!'); 

提示錯誤: 陣列字符串轉換[CORE \蛋糕\型號\數據源\ DboSource.php,線路1009]

而且還爲什麼foreach不會迭代'0'索引。 任何幫助。提前致謝。

+0

爲什麼你不接受你的問題的任何答案? – Vky

回答

0
foreach($currentSessionData as $k=>$v): 
     if ($k === 'Post') { 
      $this->request->data[$table_name]['tutor_name'] = $v['tutor_name']; 

      for($i=0;$i<count($v['area_id']);$i++){ 

       $this->request->data[$table_name]['area_id'] = $v['area_id'][$i]; 
       $this->$table_name->save($this->request->data); 
      } 

     } 

    endforeach; 

但是再次在area_id中您有另一個數組,您需要決定需要保留哪個值。還要詳細瞭解數組。

+0

謊言......我需要將所有值保存在下一行的area_id中。 –

+0

因此,'area_id'=> array((int)0 =>'3',(int)1 =>'4')實際的area_id是34? –

+0

同樣在你的解決方案中,如果你使用的是$ k條件。 if($ v ==='Post') –

0

你可以試試這個。

foreach($currentSessionData as $key):    
    $this->request->data[$table_name]['tutor_name'] = $key['Post']['tutor_name']; 
    $this->request->data[$table_name]['area_id'] = $key['Post']['area_id'][$i]; //$i= 0 or 1 (only or your given array) 
    $this->$table_name->save($this->request->data); 
endforeach;