преобразование поля даты и времени в дату в запросе sql в контроллере laravel - PullRequest
1 голос
/ 25 февраля 2020

мне нужно выполнить запрос sql в laravel контроллере, который включает запрос caluse, в котором он сравнивает поле из базы данных, имеющее тип datetime, с другим полем, которое я получаю из блэйда, имеющего тип даты, поэтому мне нужно преобразовать поле базы данных из типа datetime в тип даты

, это мой запрос в laravel контроллере, я пробовал dateformat, но id не работает

 $querydate = $request->get('querydate');
 $data = DB::table('logs')

        ->select('logs.user_id','logs.NUMCCP','logs.created_at') 

           ->where  (DB::raw('(DATE_FORMAT(logs.created_at,"%Y-%m-%d"))'),$querydate)
           ->orderby('logs.created_at','desc') 
        ->get();

$ querydate в формате гггг-мм-дд , logs.created_at в типе даты и времени, а $ querydate в типе даты, поэтому я пытаясь преобразовать logs.created_at в тип даты, после этого я хочу получить информацию, когда logs.created_at равно $ querydate

я пробовал несколько синтаксисов, которые я нашел на net, но они не работали, например: ->whereRaw("DATE_FORMAT(logs.created_at, '%Y-%m-%d') = $querydate") ->where(DB::raw("(DATE_FORMAT(logs.created_at,'%Y-%m-%d'))"),$querydate) ->orWhere('CAST(logs.created_at AS DATE)', '=', $querydate) ни один из них не работает

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Я думаю, что logs.created должен иметь метку времени, а laravel имеет несколько способов выбора и фильтрации по заданной дате.

  1. $query->whereDate('logs.created_at', '2020-01-25')
  2. $query->whereRaw('DATE(logs.created_at) = ?', ['2020-01-25'])
  3. $query->where(DB::raw('DATE(logs.created_at)'), '2020-01-25')

mysql DATE Функция преобразует дату из заданной отметки времени (или строки) в формат по умолчанию Y-m-d или yyyy-mm-dd

Надеюсь, это поможет вы

0 голосов
/ 25 февраля 2020

В Eloquent вы можете использовать метод whereDate:

$q->whereDate('created_at', '=', $querydate);

Возможно, вам потребуется преобразовать $querydate в правильный формат: $querydate->format('Y-m-d'); Также вам следует выполнять запросы из Model, а не из Controller, поскольку это противоречит MVC рисунок!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...