我有一些不太理解的问题,我有解决方案,但是我不知道为什么,这让我有点疯狂。
控制器
DB::connection()->enableQueryLog();
$transfer = Transfer::where('ticket_id', $last_ticket)->where('event_id', 36)->where('buyer', $user_email)->first();
$queries = DB::getQueryLog();
dd($queries);
结果
array:1 [
0 => array:3 [
"query" => "select * from `transfers` where `ticket_id` = ? and `event_id` = ? and `buyer` = ? limit 1"
"bindings" => array:3 [
0 => false
1 => 36
2 => "[email protected]"
]
"time" => 0.36
]
]
情况:
数据库中的$last_ticket
是唯一的,从来不会是null
,空或false
。
在我的例子中$last_ticket
是false
,但在数据库中没有任何false
,为什么我还是得到了结果?
是因为只要一个条件为false,它就不被考虑在内了吗?
所以问题是: 我该怎么做才能获得正确的结果:如果$last_ticket为false,则没有结果,如果它有一些数据,则返回被$last_ticket限制的行结果
一个选项是将if($last_ticket == false){$last_ticket='randomInexistentString_ag4dh&2g32y4t'}
放入代码中,这样它就不为空或零,但我认为这不是更好的方法