我的模型中的以下功能更新现有记录而不是创建新记录。我未在$data
变量中指定新的主键值,并且希望避免指定它。
public function add( $prop1, $prop2 )
{
$this->create();
$data = array
(
'Model' => array
(
'prop1' => $prop1,
'prop2' => $prop2
)
);
$this->save( $data );
} // add
感谢您的回答。
答案 0 :(得分:0)
// Cake 2.x
String line = s.next();
String[] fields = line.split(","); //use your choice of separator here & check how to use the split method.
我喜欢你定义$ data的方式,看起来像AOK。
========================= EDIT ===================== =====
杰兹,我是个白痴。你在第一句中说了模型。不要使用' model' =>阵列(
从$ data中取出该层,它应该在模型中工作。
另外,你是对的,在model.php文件中,你不应该说
$this->Model->create();
$this->Model->save($data);
而只是说
$this->model->save($data);
刚刚在下面进行了测试,它对我有用。
$this->save($data);
(更改了模型功能的名称,不知道我是否必须这样做)
答案 1 :(得分:0)
时间到了,提出解决方法的成本会更低。
private function getNextPrimaryId()
{
$result = $this->query
(
"SHOW TABLE STATUS LIKE 'models';"
);
$next = $result[0]['TABLES']['Auto_increment'];
return $next;
} // getNextPrimaryId
public function add( $prop1, $prop2 )
{
$data = array
(
'Model' => array
(
'model_primary_id' => $this->getNextPrimaryId(),
'prop1' => $prop1,
'prop2' => $prop2
)
);
$this->create();
$this->save( $data );
} // add
答案 2 :(得分:0)
最好的主意:
0x1bc
不要这样做:
$this->create();
$this->save(array('prop1' => $prop1, 'prop2' => $prop2));
这可以帮助你的工作代码,在你的Model Cakephp 2中:
$this->create();