【问题标题】:Getting a single value from DB::select in Laravel 7.x在 Laravel 7.x 中从 DB::select 获取单个值
【发布时间】: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 请查看编辑

标签: laravel


【解决方案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 答案它应该是有效的
    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 2018-11-05
    • 2021-05-29
    • 1970-01-01
    • 2014-11-13
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多