【问题标题】:CI-Bonfire Nested LIKE queryCI-Bonfire 嵌套 LIKE 查询
【发布时间】:2013-11-14 00:27:32
【问题描述】:

在嵌套类似查询时我可能需要一点帮助。 我的目标是完成类似以下的事情:

Select * from 'Library_Book'

WHERE(
    ('BookName' LIKE '%FILTER1%' OR 'BookDescription' LIKE '%FILTER1%')
AND 
    ('BookName' LIKE '%FILTER2%' OR 'BookDescription' LIKE '%FILTER2%')
)

到目前为止,我的做法是:

$this->db->select('Library_Book.*');
foreach($filter as $fltr){
    $this->db->like('Library_Book.BookName', $fltr);
    $this->db->or_like('Library_Book.BookDescription', $fltr);
}
$records = $this->find_all();

这会导致:

Select * from 'Library_Book'

WHERE(
    'BookName' LIKE '%FILTER1%' OR 'BookDescription' LIKE '%FILTER1%'
AND 
    'BookName' LIKE '%FILTER2%' OR 'BookDescription' LIKE '%FILTER2%'
)

如何在 or_like 语句周围加上方括号?

谢谢

图腾

#

CI-BONFIRE 版本 0.7

modules/mymodul/models/mymodel_model.php

【问题讨论】:

  • lonnieeezell 向我指出了解决方案。
  • $wheres = array(); foreach ($filter as $fltr) { $wheres[] = "('BookName' LIKE '%{$fltr}%'' OR 'BookDescription' LIKE '%{$fltr}%')"; } $this->db->where( implode(' AND ', $wheres), null, false); $records = $this->find_all();
  • 如何解决我自己的问题?或者更好的是,我如何在此处发布解决方案?解决与否。

标签: php sql codeigniter bonfire


【解决方案1】:

Bonfire 的 lonnieezell 给出的答案。

我测试了它,它可以工作。

$wheres = array();
foreach ($filter as $fltr)
{
    $wheres[] = "('BookName' LIKE '%{$fltr}%'' OR 'BookDescription' LIKE '%{$fltr}%')";
}

$this->db->where( implode(' AND ', $wheres), null, false);
$records = $this->find_all();

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2016-12-25
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多