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

rizqari's avatar

DB select returning array, not result of query

hello, i tried query with DB::select like bellow, it is return a query array . not result of query:

how to fix my query select ?

DB::statement('SET @sql = NULL');
        $db = DB::statement("
            SELECT 
                GROUP_CONCAT(DISTINCT
                    CONCAT 
                    (
                        'SUM(IF(criteria_id = ', criteria_id, ', scores, NULL) )AS ', c.alias_name
                    )
                ) INTO @sql
            FROM evaluasi AS e
            LEFT JOIN criteria AS c
            ON c.id = e.criteria_id
            ");
            
        $db2 = DB::statement("
            SET @sql = CONCAT('
            SELECT user_id, delivery_note_id, ', @sql, ' FROM evaluasi 
            GROUP BY user_id, delivery_note_id
            ')
        ");
        

        $q2 = DB::select('select @sql' );

        dd($q2);

and the result :

array:1 [▼
  0 => {#1852 ▼
    +"@sql": """
      \n
                  SELECT user_id, delivery_note_id, SUM(IF(criteria_id = 1, scores, NULL) )AS OnTime,SUM(IF(criteria_id = 2, scores, NULL) )AS Qty,SUM(IF(criteria_id  ▶
                  GROUP BY user_id, delivery_note_id\n
                  
      """
  }
]

0 likes
4 replies
lostdreamer_nl's avatar

Try adding a ->get() ;)

        $q2 = DB::select('select @sql' )->get();
rizqari's avatar

thanks, unfortunately not working

netosts's avatar

Laravel DB::select will always return an array. You can check at Laravel docs. A turn around that you can do, but i don't recommend, is to use collect(DB::select(query))->first();

Please or to participate in this conversation.