2015-11-30 2 views
0

Здравствуйте, ребята, пожалуйста, помогите мне, у меня есть «Звонок на неопределенную функцию to_date()», когда я пытаюсь запустить этот запрос.Звонок на неопределенную функцию to_date laravel

return $employees = \DB::table('employees') 
         ->whereBetween(
          'HIRE_DATE', 
          array(
           \to_date('13/01/01','mm/dd/yyyy'), 
           \to_date('07/06/02','mm/dd/yyyy') 
          ) 
         ) 
         ->get(); 

Я использую драйвер DB DB от jfelder, большое спасибо заранее.

+0

«дата (« мм/дд/гггг », strtotime (« 13/01/01 »)), должна работать. –

ответ

0

Я рекомендую использовать Carbon для дат в Ларавеле.

Вам нужно что-то вроде этого:

\Carbon\Carbon::createFromFormat('Y-m-d', '13/01/01')->format('Y-m-d'); // Inside the format you want, see php.net datetime class 

Примечание: Вы должны установить Carbon с помощью Composer в Laravel 5. Просто нажмите this ссылку для получения дополнительной информации.

+0

Он был решен с помощью: \ DB :: select ("select * from employees, где HIRE_DATE между to_date ('28/06/04 ') и to_date ('28/06/06')"); – Hustels

0

Я вижу, что вы нашли решение. Но вот еще один способ исправить вашу проблему.

Ошибка в том, что у вас смешанный синтаксис SQL и PHP.

Поскольку вы пытаетесь использовать функцию Oracle, вам необходимо обернуть эти вызовы внутри DB::raw().

return $employees = \DB::table('employees') 
    ->whereBetween(
     'HIRE_DATE', 
     array(
      \DB::raw("to_date('13/01/01','mm/dd/yyyy')"), 
      \DB::raw("to_date('07/06/02','mm/dd/yyyy')") 
     ) 
    ) 
    ->get(); 
+0

Использование опции DB :: raw(), как вы сказали, у меня есть «oci_bind_by_name(): Недопустимая переменная, используемая для привязки», я просто скопирую ее. – Hustels

+0

Может быть, из-за того, что драйвер, который вы используете, не поддерживает «DB :: raw». Виноват. Я не проверял драйвера, прежде чем ответить :( – chanafdo

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