1、当表中存在多行数据时,实现如下。报错:Call to a member function value() on null。如图1

图1

$return = Order::query()
 ->select('id')
 ->where('transaction_no', '=', '1')
 ->first()
 ->value('id');
var_dump($return);
exit;

2、调整实现如下,当记录不存在时,查询结果为 NULL。当记录存在时,查询结果为 int(6),为第一条记录的 单列 值。符合预期。

$return = Order::query()
 ->select('id')
 ->where('transaction_no', '=', '1')
 ->limit(1)
 ->value('id');
var_dump($return);
exit;

3、查看执行的 SQL,符合预期。如图2

图2

select `id` from `orders` where `transaction_no` = '1' limit 1
永夜