【发布时间】:2019-06-14 17:53:02
【问题描述】:
我正在尝试根据用户的年龄返回分页结果。当我将selectRaw() 与paginate() 结合使用时,Laravel 会抛出错误。
这是错误:
Illuminate\Database\QueryException : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'age_months' in 'having clause' (SQL: select count(*) as aggregate from
adswith age_months
代码如下:
Ad::selectRaw('TIMESTAMPDIFF(YEAR, DATE(ads.birth_date), CURDATE()) AS age_months')
->having(\DB::raw('age_months'), '<=', $request->max_age_months)
->paginate();
如您所见,count(*) 覆盖了selectRaw(),使其已过时。我尝试用get() 替换paginate(),它可以工作,并产生这个查询:
选择 TIMESTAMPDIFF(YEAR, DATE(ads.birth_date), CURDATE()) AS age_months from
ads有 age_months
这是一个错误还是我做错了什么?
【问题讨论】:
-
告诉我你的逻辑,我会将其转换为 Laravel 查询并进行分页
标签: laravel