zf2에서 테이블 게이트웨이를 사용하고 있습니다. 이것은 다음과 같은 작동 기능을 갖춘 간단한 모델 테이블입니다. 레코드를 삽입하거나 업데이트 할 수 있지만 doctrine (beforePersist)에서와 같이 beforeInsert 또는 beforeUpdate와 같은 함수를 정의 할 수있는 방법을 알아야합니다.zend framework 2 (zf2)의 TableGateway에 대한 사전 함수
namespace Application\Model\AnyModel;
use Zend\Db\TableGateway\TableGateway;
class AnyModelTable {
protected $tableGateway;
public function __construct(TableGateway $tableGateway) {
$this->tableGateway = $tableGateway;
}
public function fetchAll() {
$resultSet = $this->tableGateway->select();
return $resultSet;
}
public function getRecord($id) {
$id = (int) $id;
$rowSet = $this->tableGateway->select(array('id' => $id));
$row = $rowSet->current();
if (!$row) {
throw new \Exception("Could not found record with $id");
}
return $row;
}
public function saveRecord(AnyModel $record) {
$data = array(
'name' => $record->name,
'description' => $record->description,
'status' => $record->status,
'created_by' => $record->created_by,
'created_on' => $record->created_on,
);
$id = (int) $record->id;
if ($id == 0) {
$this->tableGateway->insert($data);
} else {
if ($this->getUser($id)) {
$this->tableGateway->update($data, array('id' => $id));
} else {
throw new \Exception("Could not update user with id $id");
}
}
}
public function deleteRecord($id) {
$this->tableGateway->delete(array('id' => $id));
}
public function getArrayCopy() {
return get_object_vars($this);
}