PDO <-> SQL Server exec (dans Laravel) renvoie un tableau vide

PHP, Laravel, appeler

$db->select("EXEC [dbo].[sp_StoredProc1] 1, 3, 1, '2016-06-12 00:00:00', '2016-09-12 00:00:00'"); 

RÉSULTAT – ARTISTE VIDE!

Appel de la même fonction via SQL Server Management Studio:

 EXEC [dbo].[sp_StoredProc1] 1, 3, 1, '2016-06-12 00:00:00', '2016-09-12 00:00:00' 

RÉSULTAT – TABLE VALIDE.

Toute idée, pourquoi cela pourrait arriver est chaleureusement apprécié

La cause de ceci – est une erreur dans PHP PDO pour MS SQL Server. L'exception n'est pas levée malgré l'occurrence. Le cas très semblable est représenté ici: http://www.sqlservercentral.com/Forums/Topic1754869-392-1.aspx

C'est donc en quelque sorte un problème en deux étapes:

  1. Lorsque les parameters de procédure stockée ne sont pas explicitement définis sur NULL / NOT NULL, ils sont hérités, ce qui provoque une exception …
  2. qui n'est pas montré par PDO (le bug est dans Laravel PDO).

Aussi, vous pourriez voir ce fil PHP – PDOException n'est pas jeté sur l'erreur, un tableau vide returnné (SQL Server) Mon collègue a fait une meilleure enquête que moi pour ce problème :)))

Essaye ça:

 DB::select(DB::raw("EXEC [dbo].[sp_StoredProc1] 1, 3, 1, '2016-06-12 00:00:00', '2016-09-12 00:00:00'"); 

Vous pouvez aussi essayer de voir ce que vous obtenez quand vous avez à la fois la partie DB::select(...) et juste la partie DB::raw("...") dans une fonction dd() et une fonction de vidage;