mysqllaravellaravel-10raw-query-builder

cannot perform raw query with DB::select(DB::raw()) after updating to laravel 10


after updating to laravel 10, i cant perform raw query like this:

$statement = 'SELECT';
    foreach ($tables = collect(availableTables()) as $name => $table_name) {
        if ($tables->last() == $table_name) {
            $statement .= "( SELECT COUNT(*) FROM $table_name) as {$table_name}";
        }
        else {
            $statement .= "( SELECT COUNT(*) FROM $table_name) as {$table_name}, ";
        }
    }
    $query  = DB::select(DB::raw($statement));

this returns me the following error:

PDO::prepare (): Argument #1 ($query) must be of type string, Illuminate\Database|Query\ Expression given

what should i do to fix this issue


Solution

  • You don't need to use DB::raw() inside DB::select():

    DB::select("select @@sql_mode");
    

    So, you can just use the following instead:

    $query = DB::select($statement);