Php Zend DB与nextval()的Postgres问题
好的,这是一个由两部分组成的问题,第一个主要问题是Php Zend DB与nextval()的Postgres问题,php,zend-framework,postgresql,zend-db,nextval,Php,Zend Framework,Postgresql,Zend Db,Nextval,好的,这是一个由两部分组成的问题,第一个主要问题是nextval()位。我有一个表,其中一列是自动递增列。对于postgres和Zend DB来说,我是个新手,现在遇到了麻烦。在表中插入新行 这就是我到目前为止所做的(在CLI中,这是可行的)。但不是在Zend DB的东西里 class Comments extends Zend_Db_Table_Abstract { protected $_name = 'comments'; public function setComm
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()
/home/src/branchs/portal/application/model/Comments.php
在线45所以我真的不知道该如何调整。我更熟悉mySQL,我可以直接删除
NULL
,它会自动递增。所以总的来说,最大的问题是nextval,Zend DB的框架中有什么我可以解决这个问题的吗
下一部分,因为这是一个由两部分组成的问题。使用$table->insert($data)
是否将自动使用$\u name
变量?我通读了Zend doc中关于这个主题的内容,但目前我有点困惑,因为在插入的情况下如何定义正确的表。使用以下方法:
"comment_id" => new Zend_Db_Expr("nextval('comments_comment_id_seq')"),
没有名为
nextval的php函数
是的,我知道nextval没有php函数。但是有了postgres,就有了。所以调用postgres函数,而不是php的;-)好的,所以我得到的错误现在已经消失了,我很感激。我不知道你在哪里找到的,但是,太棒了。现在,我想知道问题的第二部分,插入部分似乎是正确的,但失败的地方。有什么想法吗?@chris:如果你先试试看怎么办?我有,我得到了一个未定义的错误我猜$table是未定义的位,正如我所说的,插入/更新的东西让我有点与Zend DB的东西混淆了。这可能是我第一次认真尝试将ORM层用于SQL相关的东西。所以在我理解之前,我有点偏离了我的游戏better@chris:实际错误是什么?猜测是一件很酷的事情,但是程序员使用factsoverall工作。我刚刚成功插入了第一个,现在进入更新部分。无论如何,我感谢你的帮助。