У меня проблема с выбором пользователей между диапазоном возраста, когда дата рождения поля в базе данных является типом date like 1989-09- 20.Laravel 5: Получить пользователей между диапазоном времени от поля даты
Запрос
DB::raw("*, (
3959 * acos(
cos(radians(?))
* cos(radians(latitude))
* cos(radians(longitude) - radians(?))
+ sin(radians(?))
* sin(radians(latitude)))
) AS distance"))
->having('distance', '<', $distance)
->orderBy("distance")
->setBindings([$lat, $lng, $lat])
->whereHas('user', function($q) {
$q->whereBetween('date_of_birth',array(Input::get('age_from'),Input::get('age_to')))
->where('gender',Input::get('gender'))
->where('title','LIKE','%'.Input::get('title').'%');
})
->with('user')
->get();
Я пытаюсь поворачивая date_of_birth атрибут в течение ряда лет с использованием углерода в модели пользователя, но не работает, потому что до сих пор принимает в запросе формат даты и а не числа лет.
модель пользователя
<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
public function getDateOfBirthAttribute()
{
$ca = \Carbon\Carbon::parse($this->attributes['date_of_birth']);
return $ca->diffInYears();
}
}
Я надеюсь, что вы можете мне помочь.