我在zf2项目上重新考虑了我的代码,我注意到使用Model类(Entity)并不是必需的。 例如,典型的模型是(并且内部没有其他方法):
namespace Application\Model\Entity;
use Application\Model\Entity;
class User extends Entity{
const DB_TYPE = 'main';
public $id;
public $username;
public $password;
public $is_super;
public function exchangeArray($data)
{
$this->id = (isset($data['id'])) ? $data['id'] : null;
$this->username = (isset($data['username'])) ? $data['username'] : null;
$this->password = (isset($data['password'])) ? $data['password'] : null;
$this->is_super = (isset($data['is_super'])) ? $data['is_super'] : null;
}
}
存储库方法将是:
public function fetchAllOrdered($orderby, $asc_desc='asc')
{
$select = new \Zend\Db\Sql\Select;
$select->from( 'user' );
$select->columns(array('*'))->order($orderby.' '.$asc_desc);
return $this->tableGateway->selectWith($select);
}
我注意到tableGateway不需要模型定义(用于select / insert / update),在任何情况下,从用户表中选择时它将返回一个ArrayObject。在大多数情况下,在进行连接或自定义查询时不使用模型。
例如我的一个缺点是,如果我更新表(添加或删除列),我还应该更新模型。