代码之家  ›  专栏  ›  技术社区  ›  Awadhesh Kumar

Yajra Datatable中出现错误

  •  0
  • Awadhesh Kumar  · 技术社区  · 7 年前

    我正在使用 拉雷维尔 数据表 版本详细信息包括:

    | Laravel 5.5 |
    | Yajra/datatables 8* |
    

    当我尝试 查询 数据

    "message": "Method where does not exist.",
    "exception": "BadMethodCallException",
    

    我的代码如下

    public function getExpensesHistory(Request $request){
    
    
            $data = Expenses::with(['expenses' => function ($query) {
                $query->select('id', 'type_name');
            },'user' => function ($query) {
                $query->select('id', 'name');
            }])->orderBy('exp_date','desc')->get(); 
    
            $datatables=DataTables::of($data);
    
            $from_date = date('Y-m-d',strtotime($datatables->request->get('from_date')));
            $end_date = date('Y-m-d',strtotime($datatables->request->get('end_date')));
    
            if ($end_date  and $from_date) {
                $datatables->where('exp_date','<=',$end_date)->where('exp_date','>=',$from_date);
            }
    
            return $datatables->make(true);
    
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Narendrasingh Sisodia    7 年前

    您的查询应如下所示

    $query = Expenses::query();
    $query->with(['expenses' => function ($query) {
        $query->select('id', 'type_name');
    },'user' => function ($query) {
        $query->select('id', 'name');
    }]);
    
    $from_date = date('Y-m-d',strtotime($request->from_date));
    $end_date = date('Y-m-d',strtotime($request->end_date));
    
    if ($end_date and $from_date) {
        $query->where(function($q) use ($from_date, $end_date){
            $q->where('exp_date','>=',$from_date);
            $q->where('exp_date','<=',$end_date);
        });
    }
    
    $data = $query->orderBy('exp_date','desc')->get();
    

    在这里,我在变量中进行了查询,所有操作都在该对象上执行