有没有办法插入没有数据的行

时间:2016-08-17 03:38:04

标签: mysql cakephp cakephp-3.0

使用CakePHP 3.3,我有一个只包含主键的表。这用作序列。在CakePHP中,我插入一行没有数据,并生成一个新行。

Cake 2.7

a

我试图在CakePHP 3.3中复制此行为,但它没有按照我的预期进行。

CakePHP 3.3

class Identity extends AppModel {

    function nextVal() {
        $data = [];
        $this->create();
        $this->save($data);
        return $this->id;
    }
}

MySQL非常满意这一点:

class IdentityTable extends Table
{
    public function generate() {
        $identity = $this->newEntity();
        if ( $this->save($identity) ) {
            // The $ccn entity contains the id now
            \Cake\Log\Log::debug(__METHOD__. ' success');
            return $identity->id;
        }
        \Cake\Log\Log::debug(__METHOD__. ' failed');
        return false;
    }
    //
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('identity');
        $this->displayField('identityId');
        $this->primaryKey('identityId');
    }
}

我在想CakePHP 3.x ORM看到我没有插入任何东西而且它在保存上b。。

CakePHP 3中是否有方法插入没有数据的行?

1 个答案:

答案 0 :(得分:0)

你必须告诉蛋糕,实体中的某些内容会被标记为“脏”。即。

$identity ->dirty('id', true);

所以生成的查询将是

INSERT INTO sic_suppliers (id) VALUES (NULL)

我猜你没问题

PS 不知道这是否是实现这一目标的最佳方式,但似乎有效。

编辑:关注@ndm建议您也可以直接插入记录(参见cookbook

$this->query()->insert(['id'])
    ->values([null])
    ->execute();