Eloquent - 查找 - 静态调用

时间:2013-07-11 19:32:09

标签: php laravel laravel-4 eloquent

通常,如果你想通过id(主键)找到一行,你就可以这样做:

$user = User::find(1);

where

相同
$result = User::where('votes', '>', 100);

不幸的是我不能使用这个静态调用,因为我在模型中有一个构造函数:

class PurchasesModel extends Eloquent
{
    public function __construct($connection) {
        parent::__construct();
        $this->connection = $connection;
        $this->table = 'purchases';
    }
}

我搜索了整个文档,但只有静态调用。

我该怎么做?

$purchases = new PurchasesModel($this->connection);
$purchases->where('status', 'active');
$purchases->get();

似乎不起作用。

由于

1 个答案:

答案 0 :(得分:0)

重复使用相同的变量进行查询时,需要重新分配变量,以使更改生效。所以你最终会得到这样的东西。

$purchases = new PurchasesModel($this->connection);
$purchases = $purchases->where('status', 'active');
$purchases = $purchases->get();
老实说,我就是这样做的。

$purchases = new PurchasesModel($this->connection);
$purchases = $purchases->where('status', 'active')->get();

但幸运的是,您已经可以使用不同的连接开始一个Eloquent查询。

$purchases = PurchasesModel::on($this->connection)->where('status', 'active')->get();

与@Michael聊天后,我们认为重载Eloquent构造函数是一个问题。因为Eloquent在一些地方实例化(静态调用find,with等),这使得Eloquent很难,因为它假设第一个参数将成为模型的可选属性数组。