具有可选参数的Laravel Eloquent查询

Jaz*_*zzy 5 laravel eloquent

我试图了解是否有一种简单的方法将可变数量的参数传递给Eloquent中的查询,希望使用array.

根据我的发现,似乎没有办法在没有循环Input查看请求中设置的内容的情况下执行此操作.

示例:Laravel Eloquent搜索两个可选字段

这样可行,但在复杂性/不雅性方面让我觉得非Laravel.

这就是我的地方,这可能是不可能的,只是希望其他人解决了类似的问题:

$where = array("user_id" => 123, "status" => 0, "something else" => "some value");

        $orders = Order::where($where)->get()->toArray();
        return Response::json(array(
                'orders' => $orders
                ),
            200
        );
Run Code Online (Sandbox Code Playgroud)

那当然会返回一个错误strtolower() expects parameter 1 to be string, array given.

这可能吗?

Ply*_*ood 7

Order ::其中实际返回查询构建器的实例,因此这可能比您想象的更容易.如果你只是想抓住那个查询构建器的实例并"构建"你的查询,那么你可以像这样得到它:

$qb = (new Order)->newQuery();
foreach ($searchParams as $k => $v) {
    $qb->where($k, $v);
}
return $qb->get(); // <-- fetch your results
Run Code Online (Sandbox Code Playgroud)

如果您想查看查询构建器正在执行的操作,您还可以执行get(),之后不久:

dd(\DB::getQueryLog());
Run Code Online (Sandbox Code Playgroud)

这将显示生成的查询的外观; 这在与Eloquent一起玩时非常有用.