【问题标题】:Zend DB with Postgres problems with nextval()Zend DB 与 Postgres 的 nextval() 问题
【发布时间】:2012-09-24 22:50:16
【问题描述】:

好的,这是一个两部分的问题,首先主要关注的是nextval() 位。我有一个表,其中一列是自动递增列。作为 postgres 和 Zend DB 的新手,我遇到了麻烦。在表格中插入新行。

这是我迄今为止所拥有的(在 CLI 中这是有效的)。但不是 Zend DB 的东西..

class Comments extends Zend_Db_Table_Abstract
{

    protected $_name = 'comments';

    public function setComment($comment_id = null, $id = null, $comment = null)
    {
        if(($comment_id == null)||(empty($comment_id))||(trim($comment_id) == '')){return false;}
        if(($id == null)||(empty($id))||(trim($id) == '')){return false;}
        if(($comment == null)||(empty($comment))||(trim($comment) == '')){return false;}

        echo 'check one';

        $db = Zend_Db_Table::getDefaultAdapter();
        if($comment_id == "none")
        {
            $created = time()*1000;
            $data = array(
                        "comment_id" => nextval('comments_comment_id_seq'),
                        "comment" => $comment,
                        "comment_level" => 1,
                        "is_active" => true,
                        "status" => 0,
                        "id" => $id,
                        "user_id" => $_SESSION['role']['user_id'],
                        "ts_create" => $created,
                        "ts_mod" => $created
                    );
            $table->insert($data);
            return true;
        }

    }
}

我得到的错误是:

致命错误:调用未定义的函数 nextval() in /home/src/branches/portal/application/model/Comments.php 在线 45

所以不太确定如何调整。我更熟悉 mySQL,我可以删除NULL,它会自动递增。所以总而言之,最大的问题是 nextval,Zend DB 在框架中有什么可以解决这个问题的吗?

下一部分,因为这是一个两部分的问题。通过使用$table->insert($data); 会自动使用$_name 变量吗?我阅读了有关该主题的 Zend 文档,但目前它让我有点困惑,因为如何在插入的情况下定义正确的表。

【问题讨论】:

  • 没有名为nextval的php函数
  • 是的,我知道没有 php 函数 nextval。但是有 postgres。
  • 所以调用 postgres 函数,而不是 php 的函数 ;-)

标签: php zend-framework postgresql zend-db nextval


【解决方案1】:

使用这个:

"comment_id" => new Zend_Db_Expr("nextval('comments_comment_id_seq')"),

【讨论】:

  • 好的,所以我得到的错误现在已经消失了,我很感激。我不知道你在哪里找到的,但是,很棒的电话。现在,我想知道插入部分的问题的第二部分似乎在失败的地方是正确的。有什么想法吗?
  • @chris:如果你先试试看呢?
  • 我做到了,我得到一个未定义的错误我猜 $table 是未定义的位,正如我所说,插入/更新的东西让我对 Zend DB 的东西有点困惑。这可能是我第一次认真尝试将 ORM 层用于 SQL 相关的事情。所以我有点偏离我的游戏,直到我更好地理解它
  • @chris: 实际错误是什么?猜测是一件很酷的事情,但程序员会根据事实来工作
  • 总的来说,我刚刚成功插入,现在进入更新部分。无论如何,我感谢你的帮助。
猜你喜欢
  • 2020-10-11
  • 2011-05-28
  • 1970-01-01
  • 2015-08-27
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2011-01-12
相关资源
最近更新 更多