php - Yajra 数据表中出现错误
问题描述
我正在使用laravel和数据表版本详细信息是:
| 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);
}
解决方案
您的查询应该像
$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();
在这里,我在变量中进行了查询,所有操作都在该对象上执行
推荐阅读
- powershell - VSTS 发布 - 环境变量的“运行时”替换
- tfs - tffs 2017 升级到 2018 网络访问被拒绝
- c# - 在从控制器调用的类中使用 asp.net 核心应用程序中的本地化
- python - TF-IDF 的标记化和词形还原用于使用 NLTK 库的一堆 txt 文件
- mule - 处理 mule 中的重复 xml 元素
- javascript - 选定的属性不起作用
- python - 用文本文件中的 n + 字符串替换每第 n 次出现的字符串
- amazon-web-services - 您可以“cd”到 AWS S3 存储桶并在那里运行 powershell 脚本吗
- r - 网络分析 - networkD3 - 如何放置权重
- javascript - 使用 svg.js 加载 SVG 文件