Search code examples
laravellaravel-query-builderinner-query

inner query in laravel 5.3 query builder


I tried to get data using Laravel inner query like but I face a problem where I pass value variable as value my query is as below.

    $seller_name = $request->seller_name;
    $supplier_address = DB::table('supplier_addresses')
        ->where('company_main_name', function($query)
        {
            $query->select('company_main_name')
                ->where('company_name',$seller_name)
                ->from('supplier_addresses')
                ->get();
        })
        ->get();

If I pass static value instead of $seller_name then it works perfectly, I checked $seller_name is not null, it shows error variable is not defined.


Solution

  • Try this, you have to pass your $variable after function with use like this

    $seller_name = $request->seller_name;
    $supplier_address = DB::table('supplier_addresses')
            ->where('company_main_name', function($query ) use($seller_name)
            {
                $query->select('company_main_name')
                    ->where('company_name',$seller_name)
                    ->from('supplier_addresses')
                    ->get();
            })
            ->get();