简体   繁体   中英

ZF2 saving to multiple tables

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?

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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM