【发布时间】:2020-07-20 23:18:41
【问题描述】:
我需要接受来自 SP 的数据。我从 web API(laravel) 调用 SP。
//get no reg from system
$response3 = $client->post($webapi_url . '/api/max_noreg', [
// 'json' => [
'form_params' => [
'tglreg' => '2020-07-20 00:00:00',
],
'cookies' => $cookieJar,
'headers' => [
'Accept' => 'application/json',
],
]);
dd($response3);
这是我的 SP
ALTER PROCEDURE [dbo].[spmcu_Reg_MaxNoRegByTglTrans]
@TglTrans datetime
AS
SELECT NoRegMax = IsNull(MAX(NoReg),'') FROM mcu_Reg
WHERE TglTrans = @TglTrans
这是我的 API 控制器
public function max_noreg(Request $request)
{
// $credentials = [
// 'tglreg' => $request->tglreg
// ];
// $tglst = '2020-07-19 00:00:00';
$referral_registers = DB::connection('as_api')
->select('EXEC spmcu_Reg_MaxNoRegByTglTrans ?',
array($request->tglreg));
return response()->json([
'success' => true,
'data' => $referral_registers
]);
}
当我 dd() 响应时,它返回这个
响应 {#590 ▼ -原因短语:“好的” -状态代码:200 -标题:数组:6 [▶] -headerNames:数组:6 [▶] -协议:“1.1” -流:流 {#582 ▶} }
我希望它从 SP 中返回结果,如下例所示
IDU2007200003
我检查了我的 sql profiler,日志是这样的
声明@p1 int 设置@p1=1 exec sp_prepexec @p1 output,N'@P1 nvarchar(4000)',N'EXEC spmcu_Reg_MaxNoRegByTglTrans @P1',N'2020-07-20 00:00:00' 选择@p1
请帮助我获取我的 sp 结果并将其传递给 dd 以测试我是否获得了值
以下是我的转储值
GuzzleHttp\Psr7\Response Object
(
[reasonPhrase:GuzzleHttp\Psr7\Response:private] => OK
[statusCode:GuzzleHttp\Psr7\Response:private] => 200
[headers:GuzzleHttp\Psr7\Response:private] => Array
(
[Host] => Array
(
[0] => 127.0.0.1:8000
)
[Date] => Array
(
[0] => Mon, 20 Jul 2020 05:36:30 GMT
[1] => Mon, 20 Jul 2020 05:36:30 GMT
)
[Connection] => Array
(
[0] => close
)
[X-Powered-By] => Array
(
[0] => PHP/7.2.19
)
[Cache-Control] => Array
(
[0] => no-cache, private
)
[Content-Type] => Array
(
[0] => application/json
)
)
[headerNames:GuzzleHttp\Psr7\Response:private] => Array
(
[host] => Host
[date] => Date
[connection] => Connection
[x-powered-by] => X-Powered-By
[cache-control] => Cache-Control
[content-type] => Content-Type
)
[protocol:GuzzleHttp\Psr7\Response:private] => 1.1
[stream:GuzzleHttp\Psr7\Response:private] => GuzzleHttp\Psr7\Stream Object
(
[stream:GuzzleHttp\Psr7\Stream:private] => Resource id #572
[size:GuzzleHttp\Psr7\Stream:private] =>
[seekable:GuzzleHttp\Psr7\Stream:private] => 1
[readable:GuzzleHttp\Psr7\Stream:private] => 1
[writable:GuzzleHttp\Psr7\Stream:private] => 1
[uri:GuzzleHttp\Psr7\Stream:private] => php://temp
[customMetadata:GuzzleHttp\Psr7\Stream:private] => Array
(
)
)
)
【问题讨论】:
-
您的 SP 是否准确地返回了您在 dd() 中所期望的内容?如果是这样,请尝试回显
<pre>; print_r($response3); die();,而不是dd($response3)。您必须在响应中的某处具有预期值。 -
我照着说的做,但返回的响应中没有预期值。有什么建议吗?
-
您能否在返回响应之前对
$referral_registers执行相同操作。意味着把它放在print_r()。 -
试试
$response3->getBody()。 GuzzleHttp 具有getBody()函数,可以访问响应正文。 -
print_r($response3->getBody());它显示部分“print_r($response3);”
标签: php laravel stored-procedures