В моем коде я запрашиваю базу данных, принимая ввод месяца и года от пользователя.
Я пытался написать его обычным способом 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);
Я ожидаю, что запрос вернет данные из строк, которые соответствуют выбранному пользователем месяцу и году.
Какую версию Laravel вы используете?
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 Являются ли столбцы определенно sales_date
и sales_year
?
Неа. Столбец «дата_продажи». Я сделал это исправление в своем коде
Изменение столбца на правильный решает вашу проблему ?? Если нет, я бы предложил прокомментировать каждый пункт where
один за другим, чтобы увидеть, является ли проблема одной из них.
Росс, нет. Он отлично работает, если я беру число в качестве пользовательского ввода вместо названия месяца. Итак, если пользовательский ввод равен 4, он работает. но если пользовательский ввод - март, он возвращает пустое значение
@Zeekstem Это произойдет потому, что функция MySQL MONTH
возвращает от 1 до 12, то есть 3 !== 'March'
. Вам нужно будет добавить свою собственную логику, чтобы преобразовать название месяца в его числовой аналог, прежде чем передать его в whereMonth
.
Что получится, если var_dump
$salesyear
и$salesmont
?