我正在尝试创建一个连接到DB的模型,但我需要使用适配器。我正在尝试使用$this->getServiceLocator()->get('AdapterDb');
,在控制器中工作正常,但在模型中却不行。
答案 0 :(得分:1)
假设您的模型名称在DBConnect
模块中为Auth
。
因此它位于文件夹路径Auth\Model\DBConnect
。
在Auth
模块的Module.php
中,您必须定义getServiceConfig
个功能。
如果没有,那么先找到。
这是一个注册服务,注入任何依赖项等的函数。
在此处注册您的模型并注入所需的AdapterDb
依赖项 -
namespace Auth;
use Auth\Model\DBConnect;
class Module {
....
.....
public function getServiceConfig() {
return array(
'factories' => array(
....
.....
'Auth\Model\DBConnect' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$model = new DBConnect();
$model->setDbAdapter($dbAdapter);
return $model;
},
)
)
}
}
此处setDbAdapter
函数用于设置值,因此模型中应该有一个函数。
在DBConnect模型中 -
namespace Auth\Model;
class DBConnect {
...
....
protected $_dbAdapter;
public function setDbAdapter($dbAdapter) {
$this->_dbAdapter = $dbAdapter;
}
public function getDbAdapter() {
return $this->_dbAdapter;
}
......
}
现在使用$this->getDbAdapter()
获取所需的适配器。
我知道这不是最好的解决方案。它运作得很好。
我希望它有所帮助。