使用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中是否有方法插入没有数据的行?
答案 0 :(得分:0)
你必须告诉蛋糕,实体中的某些内容会被标记为“脏”。即。
$identity ->dirty('id', true);
所以生成的查询将是
INSERT INTO sic_suppliers (id) VALUES (NULL)
我猜你没问题
PS 不知道这是否是实现这一目标的最佳方式,但似乎有效。
编辑:关注@ndm建议您也可以直接插入记录(参见cookbook)
$this->query()->insert(['id'])
->values([null])
->execute();