part_os
@part_os
Сложное в простом

Конструктор запросов не видит переменную, почему?

Есть данный метод, не могу понять почему конструктор запросов не видит переменную $value .
public function getRoutePriceDoc(){

        $kg = $_GET['value_kg'];
        $m3 = $_GET['value_m3'];

        $RouteContractor = RouteContractor::where('id', $_GET['route_contractor_id'])->get();

        $density = $RouteContractor[0]->contractor->density;

        if ($m3 != 0) {
            $koef = $kg / $m3;
        }
        else{
            $koef = 0;
        }
        
        if ($koef < $density){
            //m3
            $unit_id = 3;
            $value = $m3;
        }
        else{
            // kg
            $unit_id = 2;
            $value = $kg;
        }
        

        $Route = \App\RoutePrices::where('route_contractor_id', $_GET['route_contractor_id'])
            ->where('unit_id', $unit_id)
            ->where(function ($query) {
                $query->where('ot', '<',  $value )
                      ->where('do', '>=', $value);
            })
           ->get();

        if ($Route->isEmpty()) {
            return null;
        }
        else {
            return $Route[0]->price;
        }

    }
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
@balamyt92
; select * from users; --
Функция замыкание имеет замкнутую область видимости, необходимо использовать такой синтаксис что бы "прокинуть" переменную в функцию.
->where(function ($query) use ($value) {
                $query->where('ot', '<',  $value )
                      ->where('do', '>=', $value);
            })
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы