2014-01-03 2 views
2

Я пытаюсь развернуть приложение Laravel (4.1), и у меня возникла проблема с его корректной работой с MySQL. Я свел к этой линии прямо здесь ...Laravel MySQL работает на локальном компьютере, но не удален

$curSessions = DB::table('sessions')->where('beginDate', '<', $curDate)->where('endDate', '>', $curDate)->get(); 

Я попытался изменить его к следующему и он вернулся, как и ожидался. (Но слишком много записей)

$curSessions = DB::table('sessions')->where('beginDate', '<', $curDate)->get(); 

Это не работает. Он не возвращает ошибок и пустой массив.

$curSessions = DB::table('sessions')->where('endDate', '>', $curDate)->get(); 

я тогда получил его повторить последнее заявление он сделал (DB::getQueryLog();) и запрос, который выводит работу, когда я ввод его в поле SQL на PhpMyAdmin.

Должно быть ясным. Журнал запросов показывает:

массив (1) {[0] => массив (3) {[ "запрос"] => строка (64) «выберите * из sessions, где beginDate < и endDate>? " ["bindings"] => array (2) {[0] => string (8) "2014-1-3" [1] => string (8) "2014-1-3"} ["time"] => поплавок (0,26)}}

И когда я подключу '2014-1-3' в "?" оно работает.

The rub is ... Это работает на моем компьютере, на котором работает MAMP, но не на удаленном сервере. Я проверил структуру базы данных, чтобы убедиться, что endDate и beginDate оба установлены как «Дата», и они есть.
Любая идея?

+0

Выполняется ли вручную запрос на сервере? – matpop

+0

Через поле запроса MYSQL в myphpadmin. Может быть, некоторые используют. Я играл с DB :: raw, и я думаю, может быть, как pdo обрабатывает даты? Когда ни одна из дат не сбрасывается с кавычками, запрос выходит из строя. Возможно ли, что на моем компьютере сервер MYSQL более мягкий с плохо отформатированным запросом, чем на моем сервере в asmallorange? Или еще лучше, как pdo на самом деле форматирует строку с помощью? Синтаксис? Может быть, я задумался об этом. –

+0

Я тоже думал. Однако было бы странно, поскольку даты связывают как простые строки. – matpop

ответ

0

Вам просто нужно обязательно включить ведущие 0s (в качестве предложенной матрицы).

0

Сначала вы должны убедиться, что тип вашей таблицы соответствует тому, что вы запрашиваете. Например, если столбец beginDate таблицы является меткой времени, то ваша переменная $ curDate должна быть экземпляром метки времени. сделать так что вы можете сделать:

$curDate = Carbon::createFromDate("year", "month", "day"); 

Затем вы можете использовать Laravel встроенный в красноречива, как показано ниже:

$curSessions = Sessions::where('beginDate', '<', $curDate) 
      ->where("endDate", ">", $curDate)->get(); 

FYI: есть еще один оператор можно использовать для даты и времени проверки периода с помощью whereBetween, я Здесь мы приводим пример, чтобы вы проверяли, выполняет ли он вашу работу.

$curSessions = Sessions::whereBetween('beginDate', array($beginDate, $endDate))->first(); 
Смежные вопросы