Laravel查询需求:优先取status=1的meter字段,无则取最后一条status=0的
Laravel 查询语句实现需求
需求:优先选取status=1的meter字段;若不存在status=1的数据,则选取最后一条status=0的meter字段。
方法一:利用排序优先级一次性查询
通过排序让status=1的数据优先,再按ID倒序取最新条目,直接获取目标字段:
$meter = DB::table('your_table_name') ->select('meter') ->orderBy('status', 'desc') ->orderBy('id', 'desc') ->value('meter');
逻辑说明:orderBy('status', 'desc')会将status=1的条目排在最前面,若存在多条status=1的数据,orderBy('id', 'desc')会取最新的那条;如果没有status=1的数据,自动匹配status=0里的最新条目。
方法二:分步查询(更直观)
先尝试获取status=1的数据,若不存在再查询status=0的最新条目:
// 优先查status=1的meter $meter = DB::table('your_table_name') ->where('status', 1) ->value('meter'); // 若没查到,再查status=0的最后一条 if (!$meter) { $meter = DB::table('your_table_name') ->where('status', 0) ->orderBy('id', 'desc') ->value('meter'); }
内容的提问来源于stack exchange,提问作者onur
相关产品推荐
相关产品推荐

