Laravel где даты по указанному c формату - PullRequest
0 голосов
/ 13 февраля 2020

В DB Col Name ('publi sh') varchar в формате d / m / Y для примера 30/1/2020 при попытке получить даты менее 30/1/2020 получить любую дату меньше дней

например

->where('publish','<','30/01/2020')

29/2/2020 меньше 30/1/2020, поэтому я получаю любую дату младше 30 дней, а не месяц или год

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

в вашей модели Eloquent определите средство доступа для извлечения publish как углеродный объект

public function getPublishAttribute($date)
{
    return Carbon::parse($date)->format('d/m/Y');
}

теперь на вашем контроллере сравните обе даты, как показано ниже

->where('publish','<',Carbon::parse('30/01/2020'))

надеюсь, это поможет!

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

Напишите ваш запрос как

используйте whereDate

$date = Model::whereDate('publish', '>', '30/01/2020')->get();
0 голосов
/ 13 февраля 2020

Вы можете использовать DB::raw и str_to_date для одного и того же:

 ->where(DB::raw('str_to_date(publish, "%d/%m/%Y")'),'<','30/01/2020' )

str_to_date преобразует ваше поле varchar в поле даты и времени.

MySQL -> Функции даты и времени-> STR_TO_DATE

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