Как исправить, уменьшить метод, ничего не возвращающий (Laravel) - PullRequest
0 голосов
/ 15 марта 2020

Я хочу перебрать коллекцию $ student и умножить каждое значение на $defaultValue и проверить, меньше ли оно или равно числу, которое я получаю из json data $jsonData->value. если значение меньше $jsonData->value, вернет true. Но это ничего не возвращает! это почему ? Я проверил код и обнаружил, что, когда я печатаю $carry, он не назначается как ложный. (в соответствии с этим значение $ carry по умолчанию равно false). как это исправить?

$jsonData = json_decode($request->data);

if ($jsonData->value!==0){
   foreach ($array as $key => $data){
      $lectures = Lecture::where('hall_id','=',$data['id'])->get();
           foreach ($lectures as $lecture){
              $student = Student::where('lecture_id','=',$lecture->id)
                   ->where('date','>=',$jsonData->dateOne)
                   ->where('date','<=',$jsonData->dateTwo)
                   ->get();

              $defaultValue = $lecture->value;

              if (!$student ->isEmpty()){

                   $multiplied = collect($student )
                      ->reduce(function($carry, $item) use ($defaultValue ,$jsonData){
                           return $carry || $item->number * $defaultValue <=$jsonData->value;
                   }, false);

          }

    }
}

$ возврат студента

[{"id":2,"number ":10},{"id":79,"number ":1},{"id":9,"number ":4}] 

$ defaultValue возвращается

2

$ jsonData-> возвращает значение

10

1 Ответ

1 голос
/ 15 марта 2020

Попробуйте это

$carry || (($item->number * $defaultValue) <=$jsonData->value);
...