我有问题,因为只有循环中的最后一项保存在数据库中。我使用的是 CakePhp 2.x
控制器:
for ($x=1; $x <= count($this->request->data['Goodsandoffer'])/3;$x++){
$promID = $this->request->data['Goodsandoffer']['promotionaloffer_id_'.$x];
if($this->request->data['Goodsandoffer']['cenaPromocyjna_'.$x] != ''){
$helperReqestTable3 = array('promotionaloffer_id'=>$this->request->data['Goodsandoffer']['promotionaloffer_id_'.$x],'good_id'=>$this->request->data['Goodsandoffer']['good_id_'.$x],'cenaPromocyjna'=>$this->request->data['Goodsandoffer']['cenaPromocyjna_'.$x]);
$helperReqestTable['Goodsandoffer']=$helperReqestTable3;
debug($helperReqestTable);
$this->Goodsandoffer->save($helperReqestTable);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在循环中调试的样子:
array(
'Goodsandoffer' => array(
'promotionaloffer_id' => '7',
'good_id' => '18',
'cenaPromocyjna' => '1'
)
)
Run Code Online (Sandbox Code Playgroud)
在接下来的互动中:
array(
'Goodsandoffer' => array(
'promotionaloffer_id' => '7',
'good_id' => '19',
'cenaPromocyjna' => '2'
)
)
Run Code Online (Sandbox Code Playgroud)
在数据库中只创建了最后一项的一行。
模型:
class Goodsandoffer extends AppModel {
public $displayField = 'id';
public $belongsTo = array(
'Promotionaloffer' => array(
'className' => 'Promotionaloffer',
'foreignKey' => 'promotionaloffer_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Good' => array(
'className' => 'Good',
'foreignKey' => 'good_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
Run Code Online (Sandbox Code Playgroud)
$this->Goodsandoffer->create()在调用 save 之前,您是否尝试过调用?这样你肯定会告诉 Cake 每次都创建一个新记录。
在 Cake 中创建和保存数据的一般过程是:
$this->Model->create()$this->Model->set($data_array)$this->Model->save()您还可以通过将您传递$data_array给save()函数来消除上面的第 2 步:
$this->Model->create();
$this->Model->save($data_array);
Run Code Online (Sandbox Code Playgroud)
注意: 来自手册(如果您不使用create()):
在循环中调用 save 时,不要忘记调用 clear()。
您可以创建新数据的另一种方法是确保您的模型的主键null在您传递给 save 的数据集中,尽管这不太明显并且可能最好坚持使用 create/[set/]save 流程:
$data = array('id' => null, 'somefield' => 'foobar');
$this->Model->save($data); // new record created
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |