[top-think/think]Model类的一些静态方法的问题

2023-12-15 252 views
7

我有一个model类是的构造方法是这样的

public function __construct($connection = [], $data = [])
{
    $this->connection = $connection;
    parent::__construct($data);
}

然后由于tp的model类中类似scope之类的方法是

public static function scope($name)
{
    $model  = new static(); // 重点
    $query  = $model->db();
    // 省略
}

我这些写就会出问题

$model = new xxxModel($connection);
$model->scope('test')->select();

这里使用的是->实际上调用的是一个static方法,里面又重新new了一个实例去进行scope操作,导致丢失了我动态配置的connection属性

回答

5

你这个需求不是可以直接调用Db类的connect方法解决么

9

我现在要用Model类啊,用Db类怎么封装方法 @liu21st

0

Model类都可以调用Db类的方法,有什么好封装的,你是动态的 和切换数据库连接有啥区别 模型就应该是固定的数据库连接 不带你这样玩模型的

2

就算我不是改变connection,我需要对model的构造方法传一些特殊参数进行赋值,也会出现这个问题啊