如何从Laravel 7中的mysql存储过程中获取多个结果集

时间:2020-08-09 03:06:15

标签: php mysql laravel-7

我有一个 Mysql存储过程,他从两个不同的表返回两个结果集。问题出在Laravel 7中,因为我只收到第一个结果集,而不必更改查询顺序。我检查了Mysql是否正确返回了数据。

这是Mysql的输出:

first result set

second result set

这是我通过ddd($genders);获得的输出

output of ddd($genders);

这是我的控制器的功能

public function getGenders()
    {
        $sp_call = "CALL Genders_GET(?,@Result,@UserMessage,@LogMessage)";
        $user_id = 1;
        $params = array($user_id);
        $genders = DB::select($sp_call, $params);
        ddd($genders);
    }

这是我的存储过程:

CREATE DEFINER=`root`@`localhost` PROCEDURE `Genders_GET`(
IN UserID INT,
OUT Result INT,
OUT UserMessage VARCHAR(100),
OUT LogMessage VARCHAR(1000)
)
BEGIN
    
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        GET DIAGNOSTICS CONDITION 1 LogMessage = MESSAGE_TEXT;
        SET UserMessage = 'Su solicitud no se pudo completar, intenta mas tarde.';
        SET Result = -1;
    END;
    
    
    SELECT RolID, RolName, `Status`
    FROM census.Roles;
    
    SELECT GenderID, GenderName, `Status`
    FROM census.Genders;
    
    SET Result = 1;
    SET UserMessage = 'Operación realizada exitosamente';
    SET LogMessage = '';
    
END

我尝试了这两种解决方案,但在Laravel 7中不起作用: how to fetch multiple result set from a mysql stored procedure in laravel

0 个答案:

没有答案