2015-11-10 2 views
0

У меня возникли проблемы с красноречием, которое продолжает возвращать ошибку. Ниже приведен запрос, который я пытался запустить в laravel.Laravel 5.1 Неверный формат даты и времени: 7 ОШИБКА: недействительный синтаксис ввода для даты ошибки даты

$actives = ProjectVersion::join('version_employees as ve', 've.report_id' ,'=', 'project_versions.id') 
     ->join('employees as e', 've.employee_id', '=', 'e.id') 
     ->whereBetween(\DB::raw("'1985-05-27'::date"),[ 
      \DB::raw("to_date(timeline->>'start_time', 'YYYY-MM-DD')"), 
      \DB::raw("to_date(timeline->>'release_time', 'YYYY-MM-DD')")]) 
     ->groupBy('e.name') 
     ->select(\DB::raw('count(e.id), e.name')) 
     ->get(); 

Теперь это возвращает ошибку

Invalid datetime format: 7 ERROR: invalid input syntax for type date: "to_date(timeline->>'start_time', 'YYYY-MM-DD')" 

The полного запроса, возвращенного сообщения об ошибке

SELECT count(e.id), e.name 
FROM "project_versions" inner join "version_employees" as "ve" on "ve"."report_id" = "project_versions"."id" inner join "employees" as "e" on "ve"."employee_id" = "e"."id" 
WHERE '1985-05-27'::date 
    BETWEEN to_date(timeline->>'start_time', 'YYYY-MM-DD')  
    AND to_date(timeline->>'release_time', 'YYYY-MM-DD') 
GROUP BY "e"."name" 

Дело в том, что, когда я запустить этот запрос в pgadmin, он работает штраф и возвращает результат, который я хочу.

Я застрял в течение нескольких часов, отлаживая это. Любая идея о том, где проблема?

ответ

0

Ну прежде всего, это не очень красноречив, как вы будете использовать его со всеми этими Сырые заявления ;-)

Попробуйте использовать класс Carbon: Carbon::now()->toDateString() возвращает дату в формате Y-m-d.

Для где положение, если я понять ваш вопрос правильно, вы можете использовать 2, где пункты вместо whereBetween с Raw SQL: ->where('start_time', '>', $start_time_preprocessed_by_carbon)->where('release_time', '<', $release_time_preprocessed_by_carbon)

И вы, кажется, хотите счетчик, который означает, что вы можете закончить a ->count() вместо ->get()

Я хотел бы дать вам полный запрос, но не смог его полностью расшифровать. Однако эти реализации должны дать вам толчок в правильном направлении! Они помогут вам абстрагировать ваш запрос дальше до такой степени, что внутренний генератор запросов Laravel переведет код в правильный синтаксис для вашей базы данных!

+0

Спасибо, но эта ошибка прослушивала меня часами, поэтому я сдался, и я использовал необработанные запросы (DB :: select (DB :: raw()) в конце. – Xyten

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