brahim zaid
brahim zaid

Reputation: 65

Converting MySQL query to Laravel

How I can convert this MySQL query to a Laravel query?

select *
from marques
where id in (select marque_id from products
             where category_id = 'valeur1' or category_id in (select id from categories
                                                              where parent_id = 'Valeur1'))

Upvotes: 3

Views: 71

Answers (1)

Tim Biegeleisen
Tim Biegeleisen

Reputation: 521239

I think your current query is equivalent to the following:

SELECT *
FROM marques m
LEFT JOIN products p
    ON m.id = p.marque_id
LEFT JOIN categories c
    ON p.category_id = c.id AND c.parent_id = 'Valeur1'
WHERE
    p.category_id = 'valeur1' OR
    c.id IS NOT NULL

Here is a rough guess at what your Laravel code might look like:

$res = DB::table('marques')
        ->join('products', 'marques.id', '=', 'products.marque_id')
        ->join("categories", function($join) {
            $join->on('products.category_id', '=', 'categories.id')
                 ->on('categories.parent_id', '=', 'Valeur1')
        })
        ->whereNotNull('categories.id')
        ->orWhere('products.category_id', '=', 'valeur1')
        ->select('*')
        ->get();

Upvotes: 1

Related Questions