nclsvh
nclsvh

Reputation: 2868

Laravel eloquent where with relationship

I am stuck on transforming this SQL query to an eloquent query in Laravel. The SQL query works (tested in Sequel) but I cannot write it in eloquent ...

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

This is what I have tried so far, but it returns all the questions, (ignoring the subsite filter).

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

Thanks for the help

Upvotes: 3

Views: 1902

Answers (2)

Dharmesh Rakholia
Dharmesh Rakholia

Reputation: 1238

Try this

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

Upvotes: 2

Full Stack Tutorials
Full Stack Tutorials

Reputation: 205

as per you core sql query, here is your laravel query.

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

Hope this will help you!

Upvotes: 0

Related Questions