CakePHP 2.x - 如何插入新的手动创建的记录

时间:2015-08-06 15:23:24

标签: model cakephp-2.0

我的模型中的以下功能更新现有记录而不是创建新记录。我未在$data变量中指定新的主键值,并且希望避免指定它。

public function add( $prop1, $prop2 ) 
    {           
        $this->create();
        $data = array
        (
            'Model' => array
            (
                'prop1' => $prop1,
                'prop2' => $prop2
            )
        );
        $this->save( $data );
    } // add

感谢您的回答。

3 个答案:

答案 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();