为什么where子句不影响查询?

时间:2017-12-09 09:36:41

标签: php mysql sql laravel

这是我的代码:

$tracking_codes_obj = new TrackingCode;
$tracking_code = 140;

if ( !is_null($tracking_code) )
    $tracking_codes_obj->where('tracking_code', $tracking_code);

$tracking_codes = $tracking_codes_obj->orderBy('expired')->orderBy('id')->paginate(10);

正如您所看到的,$tracking_code不为空,因此条件为true且应该应用where子句。但结果仍然与我完全消除这种情况时的结果相同。

为什么以及如何解决?

2 个答案:

答案 0 :(得分:3)

正确的语法是:

$tracking_codes_obj = $tracking_codes_obj->where('tracking_code', $tracking_code);

答案 1 :(得分:1)

如果条件如下,则需要更换:

if ($tracking_code != null)

而不是

if ( !is_null($tracking_code) )

和代码将是这样的

$tracking_codes_obj = new TrackingCode;
$tracking_code = 140;

if ($tracking_code != null)
{
    $tracking_codes_obj = $tracking_codes_obj->where('tracking_code', $tracking_code);
}

$tracking_codes = $tracking_codes_obj->orderBy('expired')->orderBy('id')->paginate(10);