2016-03-05 78 views
0

我有一个映射程序类,OrganizationMappersave方法将数据保存到多个表中。该save方法是这样的:ZF2保存到多个表格

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(); 
     ... 
} 

还有的$action#$sql#$stmt#$result#一对夫妇更次。

我该如何避免这些重复循环?

回答

1

为了避免重复的代码创建一个额外的方法,我们称之为insertIntoTable()。这种方法将用于将数据插入到某个表中的辅助功能:

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

最好的想法总是很简单:-) –