2015-12-11 4 views
1

как выбрать месяц назад записи с текущей даты из базы данных в laravel. Я пробую этот код.как выбрать месяц назад записи из базы данных в laravel

Это код контроллера.

class LoginHistoryController extends Controller { 

public function index() 
{ 
$login_history = LoginHistory::where('login_date','BETWEEN', '(CURDATE() - 
INTERVAL 10 DAY) AND CURDATE()')->get(); 
} 
} 

, но я получаю ошибку.

ответ

0

У меня будет подход, подобный этому. Сначала я рассчитает дату как

$today = date('Y-m-d'); 
$date = date_create($today); 
date_sub($date, date_interval_create_from_date_string("30 days")); 
$beforeOneMonth = date_format($date, "Y-m-d"); 

Вы должны иметь целевое значение в $beforeOneMonth сейчас. Теперь вы можете сравнить его, как вам нравится, используете ли вы оператор IN или >=. Напр.

$login_history = LoginHistory::where('login_date','>=', $beforeOneMonth)->get(); 

Дайте ему попробовать. Если вы храните date в каком-то другом формате, вы можете сделать свои собственные трюки для форматирования даты и делать то, что

0

Другим способом сделать это было бы с whereRaw:

$login_history = LoginHistory::whereRaw(
    'login_date BETWEEN (CURDATE() - INTERVAL 10 DAY) AND CURDATE()' 
)->get(); 

Обратите внимание, что whereRaw имеет что ваш код менее портативен, поскольку вы используете SQL, который может быть специфичен для вашего сервера базы данных. Но иногда вы просто не можете делать то, что хотите, используя построитель запросов.

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