【问题标题】:Got error in Yajra DatatableYajra 数据表中出现错误
【发布时间】:2018-05-15 13:39:13
【问题描述】:

我正在使用 laraveldatatables 版本详细信息是:

| 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);

    }

【问题讨论】:

  • where 是查询构建器的一部分,因此您可能需要在调用 -&gt;get 之前调用它。
  • 您的链接不会在查询生成器上调用get(),但您会这样做
  • 您需要在查询中进行所有查询更改,而不是在获取集合之后

标签: php laravel datatable laravel-5.5


【解决方案1】:

你的查询应该像

$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();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 2016-01-12
    • 1970-01-01
    • 2019-10-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多