2017-05-10 23 views
1

このSQLクエリをLaravelの雄弁なクエリに変換しようとしています。 SQLクエリは動作します(続編でテスト)が、私は雄弁にそれを書くことができない...Laravel eloquent where with relationship

SELECT faqs.question FROM faqs 
JOIN categories c ON c.id = faqs.category_id 
WHERE c.subsite = 'sport' 

これは私がこれまで試してみましたものですが、それはすべての質問を返す、(サブサイトフィルタを無視します)。ヘルプあなたコアSQLクエリにつきとして

答えて

0

ため

$cat = Faq::with(['category' => function($query) use ($subsite) { 
    $query->where('subsite', $subsite); 
}])->get(); 

おかげで、ここにあなたのlaravelクエリです。

$data = DB::table('faqs') 
      ->join('categories', 'categories.id', '=', 'faqs.category_id') 
      ->select('faqs.question') 
      ->where('categories.subsite', '=', 'sport') 
      ->get(); 

希望すると、これが役立ちます。

+0

感謝を試してみてください、これは確かに動作しません!私は雄弁な方法を試してみたい、純粋なSQLクエリを使用したいと思っていました。とにかく、これは今私のバックアップです;) – nclsvh

1

この

$cat = Faq::query(); 
if (isset($subsite) && !empty($subsite) { 
    $query->whereHas('category', function ($query) use ($subsite) { 
      $query->where('subsite', $subsite); 
     }); 
} 
$query->with('category')->get(); 
+1

私の間違いは$ catの代わりに$ queryを使用します。 –

+0

ifステートメントの '$ query'で直接' - > get() 'を呼び出すことができます。 。 – nclsvh

+0

私はあなたの答えに編集を提案しようとしましたが、一部の人々は私のポイントが有効であることを見るのに十分長く見ていませんでした。とにかく、あなたはそれを変更することができます私は答えとしてマークすることができます! – nclsvh