Нулевой возврат из контроллера - PullRequest
1 голос
/ 18 апреля 2019

У меня есть служебный файл, в котором я запускаю хранимую процедуру:

    function createCampaign($campaignName, $groupNumber){

    $stmt = \DB::connection('odbc')->getPdo()->prepare('CALL SCHEMA.INSERT_CAMPAIGN(?,?,?)');

    $stmt->bindValue(1,$campaignName, PDO::PARAM_STR);
    $stmt->bindValue(2,$groupNumber, $groupNumber==0 ? PDO::PARAM_NULL : PDO::PARAM_INT);
    $stmt->bindParam(3,$out2, PDO::PARAM_INT);

    $stmt->execute();

    return $out2;

}

Когда я запускаю эту хранимую процедуру, третий параметр возвращает OUT_CAMPAIGN_ID и ожидаемый идентификатор, так что это работает,Я возвращаю эту выходную переменную с $out2

Мой контроллер, который вызывает предыдущую функцию и также ожидает возврата:

 public function createCampaign(Request $request)
{
    $campaignName = $request->campaignName;
    $groupNumber = $request->groupNumber;

    $campaignService = new CampaignService();
    $createCampaign = $campaignService->createCampaign($campaignName, (int) $groupNumber);

    return Response::json(["OUT_CAMPAIGN_ID" => $createCampaign]);
}

Однако, когда я консоль журнала data.OUT_CAMPAIGN_IDв моем блейде или даже в консольном журнале data он просто дает мне OUT_CAMPAIGN_ID:null

Я делаю что-то не так, как я ожидаю обратно в контроллер?

Хранимая процедура:

BEGIN

INSERT INTO SCHEMA.TABLE(NAME,NUMBER)
VALUES (IN_NAME, IN_NUMBER);

SET OUT_ID = IDENTITY_VAL_LOCAL();

END;

1 Ответ

1 голос
/ 18 апреля 2019

Похоже, ваша хранимая процедура возвращает значение?Я думаю, что вам нужно сделать, это как:

$stmt = \DB::connection('odbc')->getPdo()->prepare('CALL SCHEMA.INSERT_CAMPAIGN(?,?,?)');
$stmt->bindValue(1,$campaignName, PDO::PARAM_STR);
$stmt->bindValue(2,$groupNumber, $groupNumber==0 ? PDO::PARAM_NULL : PDO::PARAM_INT);
$stmt->bindParam(3, $out2, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT);
$stmt->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...