2017-07-05 10 views
0

where節を使用するときにLaraval Eloquentに問題があります。Laravelのwhere節が機能していません

マイコード:

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

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

そして、生成されたsqlは次のとおりです。

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

それはlocaleのための所与の値を登録しません。

->where('locale', 'en')と入力しても同じ問題が発生し、Eloquentモデルを使用する代わりにRawクエリを試しても同じ問題が発生します。

ご協力いただければ幸いです。

おかげで、SR_よう

+1

あなたは、実際のクエリがどのように見えるかを知りたい場合は、 – Exprator

+0

- > toSql() t変数のバインドを返します –

+0

@SR_ありがとうございます@ – Katerina

答えて

0

はtoSql()関数は、変数バインディングを返しませんコメントに書いています。あなたがprint_r($ locale)に何か値があるかどうかを調べようとしましたか?

+0

ありがとう。私はtoSql()は変数バインディングを返すことはありませんが、私は同じSQLを(それは生成する必要があります)を書く方法は、私はLaravelではなく、フィルタリングされたリストを取得する – Katerina

関連する問題