【发布时间】:2017-07-12 14:31:35
【问题描述】:
我有一组用户,其中包含出生日期。 如何使用 Eloquent ORM 获得最接近的生日而不将原生 SQL 查询推入其中?
我也试过下一段代码,但不能正常工作:
/**
* Returns 10 closest birthdays
*
* @return \Illuminate\Http\JsonResponse
*/
public function birthdays()
{
$carbon = new Carbon();
$date = "%-" .
$carbon->month < 10 ? "0{$carbon->month}" : $carbon->month . "-" .
$carbon->day < 10 ? "0{$carbon->day}" : $carbon->day . "-";
$birthdays = User::latest('dob')
->whereRaw("dob > {$date}")
->limit(10)
->get();
return $this->jsonResponse(compact('birthdays'), []);
}
提前致谢。
【问题讨论】:
-
试试这个查询
$birthdays = User::whereRaw('DAYOFYEAR(curdate()) <= DAYOFYEAR(dob) ') ->orderByRaw('DAYOFYEAR(dob)') ->limit(10) ->get();!
标签: php mysql date laravel-5.4 laravel-eloquent