Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

birdietorerik's avatar

Strange error sql query

Hi!

This funtion in laravel-model dosent work:

public static function getgpsdataplayer($request,$golfID)
    {
        $flagget=$request->flagg;
        $green=$request->green;
        $orange=$request->orange;
        $red=$request->red;
        $judge=$request->judge;
        $toilet=$request->toilet;
        $holenumber=$request->holenumber;
        $dl=$request->dl;
        $bm=$request->bm;
        $td=$request->td;
        $range=$request->range;
        $tl=$request->tl;
        $from1='2021-11-22 09:00';
        $to1='2021-11-22 09:00';

        $query = DB::table('gpstrackers')
        ->select('*')
        ->whereIn('id', function($query) {
            $query->selectRaw('MAX(id) as id')
                ->from('gpstrackers')
                ->whereBetween('regdate',[$from1,$to1])
                ->groupBy('flight','player_id_ref');
        });
        
        if($holenumber=='true'){       
            $query1 = DB::table('holesclub');
            $query->union($query1);
        }

        if($flagget=='true'){       
            $query2 = DB::table('flagpositions');
            $query->union($query2);
        }

        if($toilet=='true'){       
            $query3 = DB::table('objectsclub');
            $query->union($query3);
        }
        
        if($flagget=='false')
        {           
            $query->where('type', '<>', 2);
        } 

        if($judge=='false')
        {           
            $query->where('type', '<>', 3);
        } 

        if($toilet=='false')
        {           
            $query->where('type', '<>', 5);
        } 

        if($holenumber=='false')
        {           
            $query->where('type', '<>', 7);
        } 

        if($dl=='false')
        {           
            $query->where('type', '<>', 12);
        } 

        if($bm=='false')
        {           
            $query->where('type', '<>', 8);
        } 

        if($td=='false')
        {           
            $query->where('type', '<>', 9);
        } 

        if($tl=='false')
        {           
            $query->where('type', '<>', 10);
        } 

        if($range=='false')
        {           
            $query->where('type', '<>', 11);
        } 

        if($green=='false'){
            $query->where('colormarker', '<>', 1);
        }

        if($orange=='false'){
            $query->where('colormarker', '<>', 2);
        }

        if($red=='false'){
            $query->where('colormarker', '<>', 3);
        }
        
        $gpsdata = $query->get();

        return $gpsdata;
        
    }

Gives me this error:

"message": "Undefined variable: from1",
"exception": "ErrorException",

Strange error

0 likes
5 replies
furqanDev's avatar

You need to pass $from1 and $to1 in the callback function of query in order to access it.

birdietorerik's avatar

@furqanDev Sorry, added the variable to my callback function like this:

function($query,$from1,$to1)

But now i get this error:

message": "Too few arguments to function App\Models\Gpstracker::App\Models\{closure}(), 1 passed in /home/vagrant/code/portal/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php on line 333 and exactly 3 expected",
furqanDev's avatar
Level 18

@birdietorerik You need to pass it like

$query = DB::table('gpstrackers')
        ->select('*')
        ->whereIn('id', function($query) use ($from1, $to1) {
            $query->selectRaw('MAX(id) as id')
                ->from('gpstrackers')
                ->whereBetween('regdate',[$from1,$to1])
                ->groupBy('flight','player_id_ref');
        });

Please or to participate in this conversation.