Laravel/Lumen 中怎么执行以下 SQL 语句?

更新多行并获取被更新行的主键ID:
SET @ids = 0;SET @ids = NULL;
UPDATE `users`
SET `state` = 1
WHERE `state` = 0
AND (SELECT @ids := CONCAT_WS(',', `id`, @ids))
LIMIT 2;
SELECT @ids;

请问如何在Laravel/Lumen中使用DB类执行并获取(SELECT @ids;)的查询结果?
已邀请:

NowAnti

赞同来自:

已经自己解决了,通过 自定义mysql函数 解决
1、自定义函数 f_getPhone_ids 获取被更新的记录的 id
DROP FUNCTION IF EXISTS `f_getPhone_ids`;

CREATE DEFINER = `root`@`localhost` FUNCTION `f_getPhone_ids`(`nState` int, `nSize` int, `sTime` varchar(20))
RETURNS varchar(255)
BEGIN
SET @Ids = '';SET @Ids = NULL;

UPDATE `phonenumbers`
    SET `state` = nState, `update_at` = sTime
    WHERE `state` = 0
    AND (SELECT @Ids := CONCAT_WS(',', `id`, @Ids))
    LIMIT nSize;

RETURN @Ids;

END;

2、调用之
$rows = DB::select("SELECT f_getPhone_ids({$this->user_id}, {$size}, {$this->update_at}) AS ids");
    if(!$rows[0]->ids) return response()->json(['state' => true, 'data' => 'no_data'], 200);
    //获取新号码
    $result = DB::table('phonenumbers')->whereIn('id', explode(',', $rows[0]->ids))->list('phonenumber');
    return response()->json(['state' => true, 'data' => $result], 200);

要回复问题请先登录注册