dongzi0857 2016-03-05 07:08
浏览 15
已采纳

ZF2保存到多个表

I have a mapper class, OrganizationMapper that saves data to multiple tables with the save method. The save method looks like this:

public function save(OrganizationInterface $organization) {
        $action = new Insert('TABLE NAME');
        $action->values([<SOME VALUES>]);
        $sql = new Sql($this->dbAdapter);
        $stmt = $sql->prepareStatementForSqlObject($action);
        $result = $stmt->execute();

        $action1 = new Insert('OTHER TABLE NAME');
        $action1->values([OTHER VALUES]);
        $sql1 = new Sql($this->dbAdapter);
        $stmt1   = $sql1->prepareStatementForSqlObject($action1);
        $result1 = $stmt1->execute();
        ...
}

There are a couple more cycles of $action#, $sql#, $stmt#, $result#.

How can I avoid these repetitive cycles?

  • 写回答

1条回答 默认 最新

  • dpdt79577 2016-03-05 08:04
    关注

    To avoid duplicate code create an additional method, let's call it insertIntoTable(). This method will be an auxiliary function for inserting data into a certain table:

    public function save(OrganizationInterface $organization) {
            $result = $this->insertIntoTable('TABLE NAME', $values);
    
            $result1 = $this->insertIntoTable('OTHER TABLE NAME', $values1);
            ...
    }
    
    private function insertIntoTable($tableName = "", $values) {
            $action = new Insert($tableName);
            $action->values($values);
            $sql = new Sql($this->dbAdapter);
            $stmt = $sql->prepareStatementForSqlObject($action);
            $result = $stmt->execute();
    
            return $result;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?