2017-05-26 4 views
0

J'ai essayé d'obtenir des données en utilisant Laravel requête interne comme mais je fais face à un problème où je passe valeur variable comme valeur ma requête est comme ci-dessous.requête interne dans laravel 5.3 constructeur de requête

$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(); 

Si je passe la valeur statique au lieu de $seller_name il fonctionne parfaitement, j'ai vérifié $seller_name est non nulle, il montre variable d'erreur n'est pas définie.

+0

assurez-vous que vous obtenez 'seller_name' de $ de' $ seller_name = $ request-> seller_name; ' –

+0

' $ seller_name' a une valeur. – HirenMangukiya

+0

@HirenMangukiya Passez juste 'use ($ seller_name)' après l'appel de 'function'! –

Répondre

1

Essayez, vous devez passer votre variable $ après la fonction avec use comme celui-ci

$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(); 
1

vous devez utiliser use comme

$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(); 
1

Vous devez passer des variables fonction anonyme avec use ($seller_name)

$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(); 
1
$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(); 

vous avez oublié d'utiliser use

0

Vous devez passer $seller_name à la fermeture à l'aide use. N'utilisez pas get() dans la requête de fermeture pour obtenir votre résultat avec une seule requête de base de données.

$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(); 

Aussi votre code fait la même chose.

$supplier_address = DB::table('supplier_addresses') 
    ->where('company_name', $seller_name) 
    ->get(); 
4

Vous devez passer variable dans la fonction utilisation (SELLER_NAME de $)

$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(); 

Vous pouvez vous référer doc ici: https://laravel.com/docs/5.4/queries#conditional-clauses