2017-05-10 28 views
1

Ich bin fest auf Umwandlung dieser SQL-Abfrage in eine eloquente Abfrage in Laravel. Die SQL-Abfrage funktioniert (in Sequel getestet), aber ich kann es in beredten nicht schreiben ...Laravel eloquent, wo mit Beziehung

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

Dies ist, was ich bisher versucht, aber es gibt alle Fragen, (ohne Berücksichtigung der Subsite Filter).

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

Danke für die Hilfe

Antwort

0

als pro Sie Kern SQL-Abfrage, hier ist Ihre Laravel Abfrage.

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

Hoffnung das wird Ihnen helfen!

+0

Danke, das funktioniert tatsächlich! Ich wollte den eloquenten Weg versuchen und keine reinen SQL-Abfragen verwenden. Wie auch immer, das ist jetzt mein Backup;) – nclsvh

1

testen

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

Entschuldigung es ist mein Fehler Verwenden Sie $ Abfrage anstelle von $ cat –

+0

Sie können '-> get()' direkt auf die '$ query' in der if-Anweisung, keine Notwendigkeit für die zusätzliche Zeile . (Bearbeiten Sie das und den Tippfehler zu Ihrer Antwort, damit ich es als Lösung markieren kann?) – nclsvh

+0

Ich habe versucht, eine Bearbeitung Ihrer Antwort vorzuschlagen, aber einige Leute haben es nicht lange genug betrachtet, um zu sehen, dass mein Punkt gültig war. Wie auch immer, wenn du es ändern kannst, kann ich es als Antwort markieren! – nclsvh