数据库适配器未在Phalcon中设置模式

时间:2014-05-08 22:03:21

标签: php postgresql phalcon

我的微应用程序出现问题,我使用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总是使用公共架构而不是我设置的架构。

由于

2 个答案:

答案 0 :(得分:2)

将此代码添加到您的模型中:

public function initialize() {
     $this->getModelsManager()->setModelSchema($this, 'the_schema_name');
}

现在你再也不需要再设置它了。当您呼叫模型时,它将自动设置。

答案 1 :(得分:0)

覆盖模型中的getSource()。要覆盖架构

public function getSource() {
    return "my_table_name";
}