Как использовать Laravel где Year в колонке varchar? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу отфильтровать год в столбце varchar с именем schedule, используя laravel whereYear(). Однако он возвращает ошибку, показанную на рисунке ниже Еще одна вещь заключается в том, что я не указываю столбец даты от whereYear до created_at в базе данных, которую используют все. Ниже мой код. Пожалуйста помоги. Спасибо.

Контроллер:

$year = $request['bill_year'];
$month = $request['bill_month'];
$period = $request['bill_period'];

if( is_numeric($year) ){

      $amortizations = Amortization::whereYear('schedule', $year)->where('bill_status',0)->get();

      if($amortizations){
         $notification = "Success";
       } else{
         $notification = "Failed";
       }

       return json_encode(array('notify'=>$notification, 'amortizations' => $amortizations, 'year' => $year, 'month' => $month, 'period' => $period));                                           
}

Столбец 'schedule' в базе данных

enter image description here

ошибка:

enter image description here

ошибка при использовании ответа Акаша Кумара Верма enter image description here

1 Ответ

0 голосов
/ 18 апреля 2019

ГдеYear работает с форматом метки времени H: i: s

use DB;
$amortizations = Amortization::where( DB::raw('YEAR(schedule)'), $year )->where('bill_status',0)->get();

или

$amortizations = Amortization::whereRaw('YEAR(schedule) = '.$year)->where('bill_status',0)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...