CakePHP使用错误的序列名称(PostgreSQL)[英] CakePHP use wrong sequence name (PostgreSQL)

本文是小编为大家收集整理的关于CakePHP使用错误的序列名称(PostgreSQL)的处理方法,想解了CakePHP使用错误的序列名称(PostgreSQL)的问题怎么解决?CakePHP使用错误的序列名称(PostgreSQL)问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

当我尝试将一些信息保存在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 .

我如何在蛋糕中更改 (我不能更改数据库).

推荐答案

我发现解决此错误的唯一方法是在名为" nextVal()"的每个模型中创建一个动作,并运行默认的PostgreSQL查询以获取下一个序列.

public function nextval() {
    $sql = "select nextval('transaction_num_seq') as nextval";
    $result = $this->query($sql);
    return $result[0][0]['nextval'];
}

其他推荐答案

似乎有一个无证件的可选属性, describe($ model)功能

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

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

public class YourModel extends AppModel {
    public $sequence = 'public.foobar_seq';
    ...
}

本文地址:https://www.itbaoku.cn/post/1764113.html