Сравнение данных в Laravel - PullRequest
0 голосов
/ 10 января 2019

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

Я хотел бы получить все строки, которые имеют переменную name в качестве имени поля, которое я передаю (и здесь это, кажется, работает), а затем только те, с датой поля, которые имеют указанный месяц под номером, который я передаю. как переменная $ месяц. какая будет правильная форма для этого? Спасибо Piero

public function filterparamenter(){
      $name = request('name');
      $month = request('$month');
      $query = subagente::all();
      $query = $query->where('subagente', $subagente);
      $query = $query->whereMonth('data', $month)->get();   

Метод Illuminate \ Database \ Eloquent \ Collection :: whereMonth не существует.

1 Ответ

0 голосов
/ 10 января 2019

Использование ::all() возвращает Collection, который имеет метод ->where(), но ->whereMonth() доступен только в классе Builder Eloquent. Измените свой код следующим образом:

$query = subagente::query();
$query = $query->where('subagente', $subagente);
$query = $query->whereMonth('data', $month)->get();

Или, более компактный:

$results = subagente::where("subagente", $subagente)
->whereMonth("data", $month)
-get();

Использование ::query() или ::where() для запуска вашего запроса сгенерирует экземпляр Builder, который можно объединить в цепочку с предложениями добавления (->where(), ->whereMonth() и т. Д.) Перед вызовом ->get() для возврата Collection из subagente записей.

Примечание: "data" должно быть "date"?

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