2017-12-23 6 views
0

Ich verwende Laravel 5.5 und ich habe die folgende Abfrage übersetzt:Argument 1 übergeben Database Grammatik Illuminate :: parametrieren() des Typs Array sein muss, Objekt gegeben

 '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' 

in eloquent:

$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) 
     ORDER BY instruments.id ASC'))->get()->toArray(); 

Allerdings bekomme ich folgende Fehlermeldung:

In Grammar.php Linie 135:

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\laravel_project\vendor\laravel\framework\src\Illuminate\Database\Query\Gramm 
    ars\Grammar.php on line 250 

Meine Vermutung ist, dass meine eloquente Abfrage falsch ist? Irgendwelche Vorschläge, was ist falsch daran?

Ich schätze Ihre Antworten!

Antwort

1
$overviewArray = DB::table('instruments') 
    ->leftJoin('financials', 'instruments.id', '=', inancials.instruments_id') 
    ->whereIn('financials.id', function($query){ 
     $query->select(DB::raw('MAX(financials.id)'))-> 
    from('financials')-> 
    groupBy('financials.instruments_id');}) 
    ->orderBy('instruments.id') 
    ->get() 
    ->toArray(); 

Ich denke, es wird in Ordnung sein.

+0

Danke für Ihre Antwort! Es löst jedoch mein Problem nicht. Ich bekomme immer noch den gleichen Fehler. – mrquad

+1

@mrquad Versuchen Sie es erneut, ich habe ein wenig geändert. – yrv16

Verwandte Themen