如何动态查询Eloquent模型?

时间:2014-06-05 14:44:54

标签: laravel-4 eloquent

概要

我正在尝试过滤我的记录结果。我搜索谷歌并偶然发现this post

我有一个一个记录的用户表 有效。

// 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 个答案:

答案 0 :(得分:1)

  

我想我的问题是为什么示例1不起作用?请记住,链接的问题有一个已接受的答案,表明我的第一个例子应该起作用

否 - 链接的已接听答案与您的示例1不同。

你的例子1应该是这样的:

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

我想我的问题是为什么示例1不起作用?

因为您已应用了where()查询,但结果没有get()