将原始数据库的结果存储在 laravel 中的变量中

store result of raw DB in a variable in laravel

我想在 Laravel 应用程序中 运行 此自定义查询并将结果保存在变量中

 SELECT MIN(t1.ID + 1) AS nextID
 ROM DB.tablename t1
  LEFT JOIN DB.tablename t2
  ON t1.ID + 1 = t2.ID
   WHERE t2.ID IS NULL

我已经尝试了很多,但无法将结果保存在变量中。如果我在 mysql 控制台中 运行 以上内容,我会得到一个整数值。

我在 laravel 中尝试了以下操作,但结果是 DBBuilder

$result = DB::table('tablename')
                ->select(DB::raw("SELECT MIN(t1.ID + 1) AS nextID
                        FROM DB.tablename t1
                        LEFTDB.tablename  t2
                         ON t1.ID + 1 = t2.ID
                         WHERE t2.ID IS NULL
                    ")
                );

删除 DB:: table 行并按如下方式修改其余部分解决了问题

DB::select(DB::raw("SELECT MIN(t1.ID + 1) AS nextID
                        FROM DB.tablename t1
                        LEFT JOIN DB.tablename t2
                         ON t1.ID + 1 = t2.ID
                         WHERE t2.ID IS NULL
                    ")
                )['0']->nextID;

看起来你正在尝试找出自动增量列的下一个值,如果是的话

         SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "yourDataBaseName" AND TABLE_NAME = "yourTableName"