2016-02-04 3 views
1

Я пытаюсь получить список в течение определенного периода времени, как показано ниже:Laravel Eloquent «whereBetween» не работает

 public function UsersWork() 
    { 
     return $this->hasMany('App\Models\UsersWork', 'user_id')->whereBetween('end', ["DATE_SUB(CURDATE() INTERVAL 5 YEAR)", date('Y-m-d')]); 
    } 

Это возвращение всего списка, а не только ожидаемый список за период времени 5 лет.

Можете ли вы определить причины такого поведения?

ответ

0

Вы должны использовать DB::raw(), если хотите использовать сырые функции sql.

public function UsersWork() 
{ 
    return $this->hasMany('App\Models\UsersWork', 'user_id') 
     ->where(function($q){ 
      $q->where(DB::raw('recur_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()')); 
     }); 
} 

Это может быть необходимо добавить use DB; сверху перед объявлением класса.

+0

Результат вашего решения говорит, что теперь у меня есть неопределенная переменная и с dd() у меня нет результата. –

+0

Попробуйте разделить его двумя способами. оставить 'usersWork()' только с $ this-> hasMany ('App \ Models \ UsersWork', 'user_id'); 'и добавить еще одну функцию в ту же модель, которая расширяет ее с помощью' return $ this-> usersWork() -> где (... ' – phaberest

+0

Остается тот же результат –

Смежные вопросы