为连接创建Eloquent别名('something')

时间:2014-12-05 14:35:33

标签: php laravel laravel-4 eloquent

我想为Eloquent制作一个别名。

我希望可以运行User::draft->all();,其中User::connection('draft')->all();应与class CustomBuilder extends \Illuminate\Database\Query\Builder { public function draft() { $this->setConnection('draft'); return $this; } } class MyModel extends \Illuminate\Database\Eloquent\Model { protected function newBaseQueryBuilder() { $conn = $this->getConnection(); $grammar = $conn->getQueryGrammar(); return new CustomBuilder($conn, $grammar, $conn->getPostProcessor()); } } 相同。

有谁知道我该怎么做?

我尝试了以下内容:

Call to undefined method CustomBuilder::setConnection()

但问题是我收到以下错误:{{1}}

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我不知道你为什么要这样做,就像我个人一样;

User::on('draft')->all();

这解释了代码中的代码。以下并非无需探​​索您的代码。

但如果您想要,可以尝试将此方法添加到您的模型中;

public static function draft(){
    $instance = new static;
    $instance->setConnection('draft');
    return $instance->newQuery();
}

那么你可以做User::draft()->all()

就个人而言,我会使用on方法,但第二种方法尚未经过测试。

编辑:看了之后setConnection不是静态方法。所以on方法就是这样。