我的微应用程序出现问题,我使用PostgreSQL作为数据库,但我创建的数据库适配器没有为模型设置架构,我需要使用模型管理器手动完成,我该如何避免为每个模型手动设置架构?
这就是我创建适配器的方式
use Phalcon\Db\Adapter\Pdo\Postgresql as DbAdapter;
...
return new DbAdapter(array(
"host" => $config->database->host,
"username" => $config->database->username,
"password" => $config->database->password,
"dbname" => $config->database->dbname,
"schema" => $config->database->schema,
));
这不起作用
$person = new Person;
$person = $person->findFirst(1);
这有效:
$person = new Person;
$app->modelsManager->setModelSchema($person, 'myschema');
$person = $person->findFirst(1);
如果我没有手动设置架构,那么模型对象无法找到表,是的,架构变量已正确设置。
另外我认为Phalcon总是使用公共架构而不是我设置的架构。
由于
答案 0 :(得分:2)
将此代码添加到您的模型中:
public function initialize() {
$this->getModelsManager()->setModelSchema($this, 'the_schema_name');
}
现在你再也不需要再设置它了。当您呼叫模型时,它将自动设置。
答案 1 :(得分:0)
覆盖模型中的getSource()。要覆盖架构
public function getSource() {
return "my_table_name";
}