2013-07-11 1 views
3

Обычно, если вы хотите, чтобы найти строку с помощью идентификатора (первичного ключа), вы просто сделать что-то вроде этого:Eloquent - Найти - Статический вызов

$user = User::find(1); 

Same для 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(); 

Кажется, что это не работа.

Благодаря

+0

Возможно, у вас есть модель PurchaseModel, а затем создайте еще одну модель, которая расширяет PurchaseModel для выполнения статических вызовов? –

+0

Как это должно работать? Мне все еще нужно разобрать связь $ с ним? – Michael

+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(); 

Но, к счастью для вас, вы уже можете начать запрос с другим вопросом.

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

После беседы с @Michael мы считали это проблемой с перегрузкой конструктора Красноречивый. Поскольку Eloquent запускается в нескольких местах (статические вызовы для поиска, с и т. Д.), Это затрудняет работу с Eloquent, поскольку предполагает, что первый параметр будет необязательным массивом атрибутов для модели.

+0

К сожалению, статический вызов не будет работать так. Я не могу сделать статический вызов, так как у меня есть конструктор внутри, иначе я получаю исключение. Так, например, как я могу использовать 'find (1)'? – Michael

+0

Вы все равно можете использовать find, и все это дойдет до конструктора запросов Eloquent. 'PurchasesModel :: on ($ this-> connection) -> find (1);' –

+0

Как я писал, я не могу делать статический вызов, так как у меня есть конструктор внутри метода (модели). :/ – Michael

Смежные вопросы