2017-07-05 4 views
0

Ich habe ein Problem mit Laraval Eloquent bei der Verwendung where-Klausel.Where-Klausel in Laravel funktioniert nicht

Mein Code:

$locale = Session::get('locale'); 

    $categories = Category::whereHas('translations', function($query) use($locale) 
    { 
     $query->where('locale', $locale); 
    })->get() 

Und das erzeugte sql ist:

select * from `categories` where exists (select * from `category_translations` where `category_translations`.`category_id` = `categories`.`id` and **`locale` = ?**) 

Es nicht den gegebenen Wert für locale registrieren.

Erhalten Sie das gleiche Problem, wenn ich ->where('locale', 'en') setzen, und selbst wenn ich rohe Abfrage anstelle von Eloquent-Modell versuchen.

Jede Hilfe würde sehr geschätzt werden.

Danke,

+1

haben Sie versucht, print_r ($ locale) und überprüfen, ob es einen Wert hat oder nicht – Exprator

+0

-> toSql() gewonnen ' t Rückgabe variable Bindung –

+0

@SR_ Vielen Dank @ – Katerina

Antwort

0

Wie SR_ schrieb im Kommentar toSql() Funktion nicht variable Bindung zurückgibt. Wenn Sie sehen möchten, wie die echten Abfragen aussehen, können Sie Tools wie Laravel Debugar installieren: https://github.com/barryvdh/laravel-debugbar

+0

Danke. Ich verstehe, dass toSql() nicht die variable Bindung zurückgibt, aber die Art, wie ich die gleiche sql (das sollte generiert werden) in mysql schreibe ich bekomme die gefilterte Liste, nicht in Laravel – Katerina