2017-09-24 2 views
0

Je voudrais tester la sortie de la fonction Laravel dans MySQL, pour cela, j'ai besoin de traduire le code en requête SQL.Traduire Laravel fonction à SQL demande de tester

Fonction:

return DB::table('products') 
     ->leftJoin('product_locations', 'products.id', '=', 'product_locations.productId') 
     ->select(DB::raw('IF(product_locations.id is not null,concat(product_locations.id,"-","M"),concat(products.id,"-","N")) as id'), DB::raw('IF(product_locations.id is not null,1,0) as multilocation'), 'products.productName', 'products.productName as text', 'product_locations.productLocationName', 'product_locations.binLocationName', 'product_locations.unitCost', 'product_locations.amount') 
     ->orderBy('products.productName') 
     ->distinct() 
     ->get(); 

Répondre

2

Utilisez la journalisation des requêtes:

DB::connection()->enableQueryLog(); 

DB::table('products') 
     ->leftJoin('product_locations', 'products.id', '=', 'product_locations.productId') 
     ->select(DB::raw('IF(product_locations.id is not null,concat(product_locations.id,"-","M"),concat(products.id,"-","N")) as id'), DB::raw('IF(product_locations.id is not null,1,0) as multilocation'), 'products.productName', 'products.productName as text', 'product_locations.productLocationName', 'product_locations.binLocationName', 'product_locations.unitCost', 'product_locations.amount') 
     ->orderBy('products.productName') 
     ->distinct() 
     ->get(); 

dd(DB::getQueryLog()) 
+0

Merci pour votre aide, j'ai essayé d'utiliser la journalisation des requêtes comme vous l'avez spécifié, mais je ne vois aucun résultat sur les outils de développement de chrome – allam

+0

Cela affichera les requêtes exécutées sur votre écran, pas dans les outils de développement –

0

Il est pas le chemin, mais vous pouvez obtenir le même résultat avec moins d'effort.

Faites une petite erreur dans votre requête, par exemple utilisez la suppression du dernier caractère d'un nom de table ou d'un nom de colonne. Ensuite, il déclencher une erreur qui montre la requête. Ensuite, vous pouvez facilement obtenir votre requête sur l'écran. Pour votre requête, utilisez product au lieu de products. Cela provoquera une erreur dans la requête et l'affichera.