代码之家  ›  专栏  ›  技术社区  ›  Tom

条令通配符在哪里查询?

  •  1
  • Tom  · 技术社区  · 15 年前

    有没有可能在查询时使用通配符,例如:

    ->where('this_field = ?', ANYTHING);
    

    我将使用它来根据未知的用户选择的参数动态构建搜索查询,因此需要有适当的条件,但能够接受值“anything”。

    另外,我可以让它工作:

    $field = 'this_field = ?';
    $value = 5;
    ...
    ->where($field, $value);
    

    ... 但它仍然不允许我使用“任何东西”作为值或消除整个查询条件。以下操作失败:

    $field = NULL;
    $value = NULL;
    ...
    ->where($field, $value);
    

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   Felix Kling    15 年前

    如果动态构建查询,还可以检查wther $value 是否具有值,然后根据需要添加where部分。例如。

    $q; // Your query object.
    
    if(isset($value)) {   // or empty() or maybe just if($value) depending on your needs.
        $q->where('this_field = ?', $value);
    }
    

        2
  •  0
  •   Tom    15 年前

    [回答自己的问题]

    在玩了这个之后,找到了一个有效的解决方案,在这里为其他人发布。

    使用 ->whereIn

    $empty = array();
    ...
    ->andWhereIn('this_field', $empty)