2

我想为我的所有模型设置一个表前缀,因为这是它在数据库中的设计方式。

我怎样才能做到这一点?

4

3 回答 3

3

您可以覆盖getSource设置前缀的方法:

class Users extends Phalcon\Mvc\Model
{
    public function getSource()
    {
        return 'my_' . 'users';
    }
}

或者,您可以设置一个基本模型类来为所有模型设置表前缀:

class BaseModel extends Phalcon\Mvc\Model
{
    public function getSource()
    {
        return 'my_' . strtolower(get_class($this));
    }
}

并从中扩展所有模型

class Users extends BaseModel
{

}

或者在 PHP 5.4 中你可以创建一个特征:

trait CustomPrefix
{
    public function getSource()
    {
        return 'my_' . strtolower(get_class($this));
    }
}

然后在你的模型中:

class Users extends Phalcon\Mvc\Model
{
    use CustomPrefix;
}

资源

于 2013-06-05T13:07:30.693 回答
1

您还可以添加所有设置以初始化功能。如果您在模型之间有任何联系,例如一对一多对多一对多,您也将在初始化方法中定义它们。

class Robots extends \Phalcon\Mvc\Model
{

    public function initialize()
    {
        $this->setSource("the_robots");
    }

}
于 2014-02-06T09:53:07.520 回答
1

此外,如果您有带有下划线“_”的表格,您可以这样写:

public function getSource()
{
    return 'my_'.strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', get_class($this)));
}
于 2014-02-06T09:45:28.660 回答