我正在使用cakephp为每个数据保存多个数据。 我已经在会话中保存数据它工作正常。 但是我在foreach循环中遇到了麻烦。 这是Controller保存多个数据:
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' => 'usman@gmail.com',
'tutor_number' => '123123',
'tutor_gender' => 'male',
'city_id' => '2',
'tutor_address' => 'asdasdas',
'area_id' => array(
(int) 0 => '3',
(int) 1 => '4'
),
'user_id' => '47'
)
) debug($ key)return:
array(
'tutor_name' => 'Muhammad Usman',
'tutor_email' => 'usman@gmail.com',
'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'];
它给出了非法字符串偏移的错误。
如果我只是保存$ key,如:
foreach($currentSessionData as $key):
$this->$table_name->save($key);
endforeach;
$this->Session->setFlash('Account created!');
它给出错误: 数组到字符串转换[CORE \ Cake \ Model \ Datasource \ DboSource.php,第1009行]
还有为什么foreach不会迭代' 0'指数。 任何帮助。提前谢谢。
答案 0 :(得分: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中你还有另一个数组,你需要决定你需要保留哪个值。另请阅读有关数组的更多信息。
答案 1 :(得分: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;