2

当我尝试在 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(我无法更改数据库)。

4

2 回答 2

4

Postgres.php中的describe($model)函数似乎使用了一个未记录的可选属性

if (isset($model->sequence)) {
    $this->_sequenceMap[$table][$model->primaryKey] = $model->sequence;
}

像这样使用它来指定表的主键的顺序。

public class YourModel extends AppModel {
    public $sequence = 'public.foobar_seq';
    ...
}
于 2013-08-22T17:59:43.550 回答
0

我发现修复此错误的唯一方法是在每个模型中创建一个名为“nextval ()”的操作,并运行默认的 PostgreSQL 查询以获取下一个序列。

public function nextval() {
    $sql = "select nextval('transaction_num_seq') as nextval";
    $result = $this->query($sql);
    return $result[0][0]['nextval'];
}
于 2013-02-22T11:10:39.540 回答