首页 > 解决方案 > 如何从 laravel 中的存储过程中获取最后插入的值?

问题描述

尝试保存数据时,我无法获取数据。我想在插入数据后获取值,我的意思是插入后的数据。

这是我的控制器

控制器.php

  $transactionmemo = DB::connection('sqlsrv2')->insert('sp_Crewprogrammemo_Insert ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', 
        array($crewprogrammemo_id,
        $crewprogrammemoNumber,
        $showFocusId,
        $showName,
        $crewprogrammemoDescription,
        $crewprogrammemoIsapproved,
        $crewprogrammemoApprovedby,
        $crewprogrammemoApproveddate,
        $crewprogrammemoIsdisabled,
        $crewprogrammemoDisabledby,
        $crewprogrammemoDisableddate,
        $crewprogrammemoCreatedby,
        $crewprogrammemoCreateddate,
        $crewprogrammemoModifiedby,
        $crewprogrammemoModifieddate 
    ));

    $lastinsertedid = $transactionmemo['crewprogrammemo_id'];

    dd($lastinsertedid)

我得到了空数据,我一开始crewprogrammemo_id是空的,但是这个值会在存储过程中创建。

存储过程:

ALTER PROCEDURE [dbo].[sp_Crewprogrammemo_Insert]
    @crewprogrammemo_id AS varchar(50), 
    @crewprogrammemo_number AS varchar(125), 
    @show_focus_id AS varchar(50), 
    @show_name AS varchar(255), 
    @crewprogrammemo_description AS varchar(1000), 
    @crewprogrammemo_isapproved AS tinyint, 
    @crewprogrammemo_approvedby AS varchar(50), 
    @crewprogrammemo_approveddate AS datetime, 
    @crewprogrammemo_isdisabled AS tinyint, 
    @crewprogrammemo_disabledby AS varchar(255), 
    @crewprogrammemo_disableddate AS datetime, 
    @crewprogrammemo_createdby AS varchar(255), 
    @crewprogrammemo_createddate AS datetime, 
    @crewprogrammemo_modifiedby AS varchar(255), 
    @crewprogrammemo_modifieddate AS datetime
AS 
BEGIN 
    DECLARE @errormessage as nvarchar(100);
    DECLARE @type as nvarchar(2)

    SET @type = 'CP' 

    DECLARE @channel as nvarchar(3)
    SET @channel = 'tv7' 

    EXEC sp_sequencer_transaction @type, @crewprogrammemo_id OUTPUT

    IF @crewprogrammemo_id IS NULL OR @crewprogrammemo_id = '' 
    BEGIN
        SET @errormessage = 'Booking request ID null, Booking request cannot be saved!';
        RAISERROR (@errormessage, 16, 1);
        RETURN;
    END 

    INSERT INTO transaction_crewprogrammemo (crewprogrammemo_id,  crewprogrammemo_number, show_focus_id, show_name, crewprogrammemo_description,  crewprogrammemo_isapproved, crewprogrammemo_approvedby, crewprogrammemo_approveddate, crewprogrammemo_isdisabled,  crewprogrammemo_disabledby, crewprogrammemo_disableddate,  crewprogrammemo_createdby, crewprogrammemo_createddate,  crewprogrammemo_modifiedby, crewprogrammemo_modifieddate)
    VALUES (@crewprogrammemo_id, @crewprogrammemo_number, @show_focus_id, @show_name, @crewprogrammemo_description, @crewprogrammemo_isapproved, @crewprogrammemo_approvedby, @crewprogrammemo_approveddate, @crewprogrammemo_isdisabled, @crewprogrammemo_disabledby, @crewprogrammemo_disableddate, @crewprogrammemo_createdby, @crewprogrammemo_createddate, @crewprogrammemo_modifiedby, @crewprogrammemo_modifieddate)

    SELECT 
        crewprogrammemo_id, crewprogrammemo_number, show_focus_id, show_name,  
        crewprogrammemo_description, crewprogrammemo_isapproved,
        crewprogrammemo_approvedby, crewprogrammemo_approveddate,  
        crewprogrammemo_isdisabled, crewprogrammemo_disabledby,  
        crewprogrammemo_disableddate, crewprogrammemo_createdby,  
        crewprogrammemo_createddate, crewprogrammemo_modifiedby,  
        crewprogrammemo_modifieddate
    FROM 
        transaction_crewprogrammemo
    WHERE 
        crewprogrammemo_id = @crewprogrammemo_id
END 

crewprogrammemo_id将在通过存储过程后获得价值,那么我怎样才能在控制器上取回该值?

我之前尝试过使用$transactionmemo['crewprogrammemo_id']但没有解决 - 我该如何解决这个问题?

标签: sql-serverlaravel

解决方案


推荐阅读