Использование дня, месяца или года в качестве фильтра запроса MYSQL в Laravel

В моем коде я запрашиваю базу данных, принимая ввод месяца и года от пользователя.

Я пытался написать его обычным способом PHP и другими способами, которые я могу найти в Интернете, но, похоже, ни один из них не работает. вот код, который я использую в настоящее время

$salesmonth = $request->input('mn');
$salesyear = $request->input('yr');
$id = Auth::user()->id;
$comm = \DB::table('bakerysales')
    ->where([
        ['customer_id', '=', $id], [MONTH('sales_date'), '=', $salesmonth], [YEAR('sales_date
'), '=', $salesyear]
    ])
    ->get();

return view::make('showCommission')->with('comm', $comm);

Я ожидаю, что запрос вернет данные из строк, которые соответствуют выбранному пользователем месяцу и году.

Что получится, если var_dump $salesyear и $salesmont?

namelivia 08.04.2019 15:29

Какую версию Laravel вы используете?

Rwd 08.04.2019 15:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
433
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Laravel поставляется с несколькими разными где оговорки для работы с датами, например
whereDate / whereMonth / whereDay / whereYear.

Это означает, что ваш метод контроллера может выглядеть примерно так:

$comm = \DB::table('bakerysales')
    ->where('customer_id', auth()->id())
    ->whereMonth('sales_date', $request->input('mn'))
    ->whereYear('sales_date', $request->input('yr'))
    ->get();

return view('showCommission', compact('comm'));

Спасибо за это @Росс. Но я получаю пустой результат из БД. Мой ввод предоставляет данные в порядке. Кажется, я не могу понять, почему запрос возвращается пустым при заполнении БД

Zeekstem 09.04.2019 18:43

@Zeekstem Являются ли столбцы определенно sales_date и sales_year?

Rwd 09.04.2019 19:08

Неа. Столбец «дата_продажи». Я сделал это исправление в своем коде

Zeekstem 09.04.2019 20:11

Изменение столбца на правильный решает вашу проблему ?? Если нет, я бы предложил прокомментировать каждый пункт where один за другим, чтобы увидеть, является ли проблема одной из них.

Rwd 10.04.2019 09:51

Росс, нет. Он отлично работает, если я беру число в качестве пользовательского ввода вместо названия месяца. Итак, если пользовательский ввод равен 4, он работает. но если пользовательский ввод - март, он возвращает пустое значение

Zeekstem 10.04.2019 14:50

@Zeekstem Это произойдет потому, что функция MySQL MONTH возвращает от 1 до 12, то есть 3 !== 'March'. Вам нужно будет добавить свою собственную логику, чтобы преобразовать название месяца в его числовой аналог, прежде чем передать его в whereMonth.

Rwd 10.04.2019 15:21

Другие вопросы по теме