我想为我的所有模型设置一个表格前缀,因为这是它在数据库中的设计方式。
我怎样才能做到这一点?
答案 0 :(得分: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;
}
答案 1 :(得分:1)
另外,如果你有带下划线“_”的表,你可以这样写:
public function getSource()
{
return 'my_'.strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', get_class($this)));
}
答案 2 :(得分:1)
您还可以添加所有设置以初始化功能。如果您在模型之间有任何连接,例如一对多许多,那么您也将在初始化方法中定义它们。
class Robots extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->setSource("the_robots");
}
}