我想为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}}
知道如何解决这个问题吗?
答案 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方法就是这样。