【发布时间】:2020-01-05 17:20:19
【问题描述】:
我在 Larevel 中有一个模型,它接收用于报告数据库中总单位的参数。
我希望能够根据用户选择的$entity_ids 和$start 和$end 日期过滤返回的单位。
entity_ids 可以通过简单的whereIn() 方法调用正常工作,但日期会导致一些问题。
我在Order.php 模型中的代码如下:
public static function getAllOrdersForReporting($entity_ids, $start, $end) {
$orders = Order::select('all order information entered here')
->whereIn('orders.entity_id', $entity_ids)
->when($start && $end, function ($query, $start, $end) { //<-- Error Thrown Here
return $query->whereBetween('order_date', [$start, $end]);
})
->join('entities', 'entities.id', '=', 'ura_orders.entity_id')
->join('entity_address_information', 'entity_address_information.entity_id', '=', 'ura_orders.entity_id')->distinct()->get();
return $orders;
}
在我的ReportingController.php 中,我输入以下内容:
public function displayUnits() {
$entities = request()->entities_ids;
$start = request()->start_date;
$end = request()->end_date;
$orders = Ura_order::getAllOrdersForReporting($entities, $start, $end);
return view('reporting.pages.units', compact('entities', 'start', 'end', 'orders'));
}
但是,当我运行它时,我收到以下错误:
函数参数太少 App\Models\Order::App\Models{closure}(), 2 传入 C:\xampp\htdocs\mywebsite\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php 在第 91 行,预计正好 3 行
不完全确定这个错误是什么意思,除了 Model 只看到 2 个传入的错误,它预期 3 个。
我在上面的代码中标出了错误所在的行。
关于如何让它发挥作用的任何建议?我知道when() 的第三个参数应该是一个回调函数,但不知道如何使它工作。
【问题讨论】: