在 Laravel 7.x 中从 DB::select 获取单个值
Posted
技术标签:
【中文标题】在 Laravel 7.x 中从 DB::select 获取单个值【英文标题】:Getting a single value from DB::select in Laravel 7.x 【发布时间】:2021-03-13 01:22:15 【问题描述】:我正在使用 Laravel 的 DB::select
运行查询以获取 MAX()
值。我只想要单行结果中的单列值。我用什么方法从DB::select()
语句中得到这个?
我发现这个答案enter link description here 提供了pluck()
和value()
。 pluck()
的行为自 5.3 以来发生了变化,所以这不是答案。但是,当我使用value()
时,并没有得到我期望的值。相反,我得到了一个关于数组的错误:
$query = DB::select('SELECT max(sort) AS sort FROM man_pos WHERE manual_id = ?', [$manual_id]);
dd($query);
错误 HTTP 500 内部服务器错误
调用数组上的成员函数 value()
当然,我可以遍历数组来拉取值,但是使用方法的重点是避免这种多余的繁琐。
根据 cmets 中的请求,这里是一些示例数据和预期结果。一、查询:
MariaDB [dev]> SELECT MAX(sort) FROM man_pos WHERE manual_id = 1;
+-----------+
| MAX(sort) |
+-----------+
| 3 |
+-----------+
二,我想得到什么:
$max_sort = DB::select('SELECT max(sort) AS sort FROM man_pos WHERE manual_id = ?', [$manual_id])->getSingleValue();
dd($max_sort);
^ 3
【问题讨论】:
你能写出样本数据和预期数据吗 @NurbekBoymurodov 请查看编辑 【参考方案1】:你可以尝试使用 Laravel 内置的 MAX
函数:
$max_sort = DB::table('man_pos')
->where('manual_id', $manual_id)
->max('sort');
【讨论】:
【参考方案2】:你想要单个最大返回单个值的单个列
$max_sort = DB::table('man_pos')->select('sort')->where('manual_id', '=', $manual_id)->max('sort');
【讨论】:
@user151841 我刚刚测试过我是错误的,当你使用 max() 时你不需要 get() 和 first() 我编辑的答案你尝试过 Tim Biegelesion 答案它应该是有效的以上是关于在 Laravel 7.x 中从 DB::select 获取单个值的主要内容,如果未能解决你的问题,请参考以下文章