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

GregorSams's avatar

Error - Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array

Hello guys,

the following query works perfectly well on my mysql db:

SELECT *
            FROM instruments
            LEFT join financials on instruments.id=financials.instruments_id
            WHERE financials.id IN
            ( SELECT MAX(financials.id)
            FROM financials
            GROUP BY financials.instruments_id )
            ORDER BY instruments.id ASC

I tried to translate the query into eloquent, which looks the following:

$overviewArray = DB::table('instruments')
    ->leftJoin('financials', 'instruments.id', '=', 'financials.instruments_id')
    ->whereIn('financials.id', DB::raw('SELECT MAX(financials.id)
    FROM financials
    GROUP BY financials.instruments_id '))
    ->orderBy('instruments.id')
    ->get()//I get the error here
->toArray(); 

However, I get the following error:

[2017-12-23 15:01:45] local.ERROR: Type error: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, object given, called in C:\Users\admin\Desktop\Coding Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 250 {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Type error: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, object given, called in C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 250 at C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Grammar.php:135)
[stacktrace]
#0 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php(250): Illuminate\Database\Grammar->parameterize(Object(Illuminate\Database\Query\Expression))
#1 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php(196): Illuminate\Database\Query\Grammars\Grammar->whereIn(Object(Illuminate\Database\Query\Builder), Array)
#2 [internal function]: Illuminate\Database\Query\Grammars\Grammar->Illuminate\Database\Query\Grammars\{closure}(Array, 0)
#3 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Support\Collection.php(847): array_map(Object(Closure), Array, Array)
#4 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php(197): Illuminate\Support\Collection->map(Object(Closure))
#5 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php(180): Illuminate\Database\Query\Grammars\Grammar->compileWheresToArray(Object(Illuminate\Database\Query\Builder))
#6 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php(85): Illuminate\Database\Query\Grammars\Grammar->compileWheres(Object(Illuminate\Database\Query\Builder), Array)
#7 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php(60): Illuminate\Database\Query\Grammars\Grammar->compileComponents(Object(Illuminate\Database\Query\Builder))
#8 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\MySqlGrammar.php(39): Illuminate\Database\Query\Grammars\Grammar->compileSelect(Object(Illuminate\Database\Query\Builder))
#9 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1650): Illuminate\Database\Query\Grammars\MySqlGrammar->compileSelect(Object(Illuminate\Database\Query\Builder))
#10 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1707): Illuminate\Database\Query\Builder->toSql()
#11 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1692): Illuminate\Database\Query\Builder->runSelect()
#12 C:\Users\admin\Desktop\Projects\demo_project\app\Console\Commands\OverviewCommand.php(58): Illuminate\Database\Query\Builder->get()
#13 [internal function]: App\Console\Commands\OverviewCommand->handle()
#14 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(29): call_user_func_array(Array, Array)
#15 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#16 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#17 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Container\Container.php(549): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#18 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Console\Command.php(183): Illuminate\Container\Container->call(Array)
#19 C:\Users\admin\Desktop\Projects\demo_project\vendor\symfony\console\Command\Command.php(252): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#20 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Console\Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#21 C:\Users\admin\Desktop\Projects\demo_project\vendor\symfony\console\Application.php(936): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 C:\Users\admin\Desktop\Projects\demo_project\vendor\symfony\console\Application.php(240): Symfony\Component\Console\Application->doRunCommand(Object(App\Console\Commands\OverviewCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 C:\Users\admin\Desktop\Projects\demo_project\vendor\symfony\console\Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Console\Application.php(88): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 C:\Users\admin\Desktop\Projects\demo_project\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(121): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 C:\Users\admin\Desktop\Projects\demo_project\artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27 {main}
"} 

The error occurs at the ->get() method of my query.

Any suggestions what I am doing wrong?

I appreciate your replies!

0 likes
1 reply
bobbybouwmann's avatar

The whereIn call expects an array as second argument. It looks like theDB::raw call is not returning an array.

Two options here: check the output from the raw call or do the where in as a raw statement.

Please or to participate in this conversation.