2014-06-05 4 views
0

Synopsis

Я пытаюсь отфильтровать результаты своей записи. Я искал google и наткнулся на this post.Как динамически запрашивать модель Eloquent?

У меня есть таблица пользователей с одна запись is активная.

// Example 1: 
$model = with(new User); 
$model->where('is_active', '=', 0); 

dd($model->count()); // Output: 1 (Expected: 0) 

// Updated (for argument sake): 
dd($model->get()->count()); // Output: 1 (Expected: 0) 

Однако, когда я делаю следующее, я получаю правильный результат:

// Example 2: 
dd(User::where('is_active', '=', 0)->count()); //Output: 0 (As expected); 

Что я пытаюсь сделать (псевдо-код):

// Example 3: 
public static function getFiltered() 
{ 
    $model = with(new static); 

    // This is obviously populated but for argument sake. 
    $filters = array(
     'is_active' => 1, 
    ); 

    foreach ($filters as $filter => $value) { 
     $model->where($filter, '=', $value); 
    } 

    return $model; 
} 

Я думаю, мой вопрос почему не пример 1 работа?

Принимая во внимание, что связанный вопрос имеет принятый ответ, который предполагает, что мой первый пример должен работать.

ответ

1

Я думаю, мой вопрос, почему не пример 1 работает? Принимая во внимание, связанный вопрос принятым ответ, который предлагает мой первый пример должен работать

Нет - связанный принят ответ не является такой же, как ваш пример 1.

Ваш пример 1 должен быть таким:

$model = new User; 
$newmodel = $model->where('is_active', '=', 0)->get(); 
dd($newmodel->count()); 

Я думаю, мой вопрос, почему не пример 1 работы?

Поскольку вы применили запрос where(), но вы не сделали get() результатов.

+0

Собственно, да, связанный ответ похож на мою проблему. Даже с 'get()' я все равно получаю те же результаты. Тот факт, что 'get()' не выполняется, не имеет значения, проблема заключается в использовании статического 'where' в отличие от нестатического' where'. – ash

+0

Я исправил свой ответ. Проблема в том, что вы делаете «новую модель», что означает, что счет будет 1 для «этой» модели. Если вы получаете новые результаты и присваиваете их новой переменной, она работает так, как ожидалось. Я просто протестировал его. – Laurence

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