当我尝试在Postgres表中保存一些信息时,CakePHP会为我返回此错误:
array(
(int) 0 => '[PDOException] SQLSTATE[42P01]: Undefined table: 7 ERRO: relação "public.cashier_transaction_transaction_num_seq" não existe
Request URL: /www/cashiers/open
Stack Trace:
但是CakePHP是正确的:这个序列不存在。正确的序列是 transaction_num_seq 。
如何更改 IN CAKE (我无法更改数据库)。
答案 0 :(得分:4)
描述($ model)函数在 Postgres.php
中似乎使用了一个未记录的可选属性if (isset($model->sequence)) {
$this->_sequenceMap[$table][$model->primaryKey] = $model->sequence;
}
使用它,就像这样,指定表的主键的顺序。
public class YourModel extends AppModel {
public $sequence = 'public.foobar_seq';
...
}
答案 1 :(得分:0)
我发现修复此错误的唯一方法是在每个名为“nextval()”的模型中创建一个操作,并运行默认的PostgreSQL查询以获取下一个序列。
public function nextval() {
$sql = "select nextval('transaction_num_seq') as nextval";
$result = $this->query($sql);
return $result[0][0]['nextval'];
}