在使用MySQL 8的Laravel 8站点上,我创建了一个带有1个in和2个out参数的过程:

DELIMITER $$

DROP PROCEDURE IF EXISTS getObjectsCount $$

CREATE DEFINER=`lardev`@`localhost` PROCEDURE `getObjectsCount`( IN in_objectType varchar(100), OUT retCount bigint unsigned, OUT totalUsersCount bigint unsigned  )
BEGIN


IF in_objectType = 'users_without_active_tasks' THEN
    select count(*) into retCount from users where users.id not in (select distinct tasks.creator_id from tasks where tasks.status = 'T');
END IF;

IF in_objectType = 'users_without_completed_tasks' THEN
    select count(*) into retCount from users where users.id not in (select distinct tasks.creator_id from tasks where tasks.status = 'D');
END IF;

SELECT concat('retCount is ', retCount);
select count(*) into totalUsersCount from users;


END$$
DELIMITER ;

并将其命名为:

call getObjectsCount('users_without_completed_tasks', @returnCount, @totalUsersCount);
select @returnCount, @totalUsersCount;

我得到了有效的结果.

但当我试图从php页面运行相同的过程时,如下所示:

$data = DB::select("call getObjectsCount('users_without_completed_tasks', @returnCount, @totalUsersCount)");
dd($data);

我得到了奇怪的结果:

+"concat('in_objectType is ', in_objectType)": "in_objectType is users_without_completed_tasks"

看起来该方法在服务器上不起作用.

我可以通过什么方式从MySQL过程中获取幼年期的数据?

"laravel/framework": "^10.34.2"
Mysql 8.0.34-0ubuntu0.22.04.1

提前谢谢!

推荐答案

try 此更新一次.

DB::select("call getObjectsCount('users_without_completed_tasks', @returnCount, @totalUsersCount)");

$data = DB::select('SELECT @returnCount as returnCount, @totalUsersCount as totalUsersCount');
dd($data);

Mysql相关问答推荐

如何改进对另一个表中多行的查询依赖性

筛选器中的Case When语句

了解MySQL_stmt_BIND_NAMED_Param()-MySQL C API

SQL Select 最大值和平均值

根据 JOIN 结果计算列中的值?

MySQL 可以用于将列表排序为三分之三吗?

错误1075:表定义不正确;只能有一个自动列,它必须定义为一个键(使用 gorm 和 mysql)

Laravel 查询构建器 where() 用于何时产品必须有多个标签(使用 product_tags 数据透视表多对多)

MySQL REGEXP 在没有 BINARY 模式的情况下区分大小写?

试图获取非对象的属性

Spring Boot:Jdbc javax.net.ssl.SSLException:在接收对等方的 close_notify 之前关闭入站

MAMP mysql 服务器无法启动.没有mysql进程正在运行

何时在 mysql 中使用 TEXT 而不是 VARCHAR

我应该使用什么列数据类型来存储大量文本或 html

MySQL - 基于同一表中的行求和列值

MySQL与空值比较

如何在 MySQL 中删除此索引?

SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #3 不在 GROUP BY 子句中并且包含非聚合

当运行 UPDATE ... datetime = NOW();所有更新的行都会有相同的日期/时间吗?

BIGINT mysql 性能与 INT 相比