我试图了解是否有一种简单的方法将可变数量的参数传递给Eloquent中的查询,希望使用array
.
根据我的发现,似乎没有办法在没有循环Input
查看请求中设置的内容的情况下执行此操作.
这样可行,但在复杂性/不雅性方面让我觉得非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
.
这可能吗?
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一起玩时非常有用.
归档时间: |
|
查看次数: |
1629 次 |
最近记录: |