我正在将一个程序从纯 PHP 重写到 Laravel,我在执行存储过程时遇到了问题(我没有写它)。
当我尝试
$sheetLines = DB::select("exec XXXXXXX".dbo.PRICELIST '?'", [$id]);
当 PHP 还没有达到最大内存时,它会继续运行。 (增加内存只会让它跑得更久)
同时在旧程序中它需要大约 3 秒并发送响应。
$tsql = "exec XXXXXXX.".dbo.PRICELIST '".$id."'";
此外,当我从其他模块调用其他存储过程时,一切正常。
我注意到如果我尝试这样的事情也会发生,例如:
DB::select(count(price) from orders group by price);
// would work with: count(price) as price_count
我已经搜索了很多这个问题,但没有找到解决方案。 如果有任何帮助,我将不胜感激
最佳答案
我会访问底层 PDO 驱动程序来执行存储过程。
尝试
$db = DB::getPdo();
$stmt = $db->prepare("EXEC XXXXXXX.dbo.PRICELIST :id");
$stmt->bindValue(':id', $id);
$result = $stmt->execute();
如果不行你可以试试query方法;
$query = DB::getPdo()->query("EXEC XXXXXXX.dbo.PRICELIST $id");
关于您的计数问题,在 Laravel 的 Eloquent 中,您可以执行以下操作;
$count = DB::table('orders')->groupBy('price')->count('price');
关于php - Laravel 永无止境的 EXEC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49513304/