1

わかりました、これは 2 つの部分からなる質問です。最初の主要な関心事はnextval()ビットです。列の 1 つが自動インクリメント列であるテーブルがあります。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;
        }

    }
}

私が得ているエラーは次のとおりです。

致命的なエラー: 45 行目の/home/src/branches/portal/application/model/Comments.phpの未定義関数 nextval() の呼び出し

そのため、それを調整する方法がよくわかりません。私は、ドロップするだけNULLで自動インクリメントできる mySQL に慣れています。全体として、大きな問題は nextval です。Zend DB のフレームワークには、この問題を解決できるものはありますか?

これは 2 つの部分からなる質問なので、次の部分です。使用すると、変数$table->insert($data);が自動的に使用されますか? $_nameこの件に関するZendドキュメントを読みましたが、現在、挿入の場合に正しいテーブルを定義する方法について少し混乱しています。

4

1 に答える 1

2

これを使って:

"comment_id" => new Zend_Db_Expr("nextval('comments_comment_id_seq')"),
于 2012-09-24T22:54:33.213 に答える