简体   繁体   English

Codeigniter中的SQL LIKE运算符

[英]SQL LIKE operator in codeigniter

If have this tables 如果有这个表

USER TABLE
ID  | name  | mode
1   |  foo  | private

PRIVATE TABLE
private_id  | id |  private_name
1           | 1  |  private mode

PUBLIC TABLE
public_id   | id |  public_name
1           | 1  |  public mode

I want to return the query depending what data in school for example if the data of COLUMN MODE in USER TABLE is private I want it to search only in PRIVATE TABLE and if its public it only returns the data in PUBLIC TABLE 我想返回查询,具体取决于学校中的哪些数据,例如,如果USER TABLECOLUMN MODE的数据是private我希望它仅在PRIVATE TABLE搜索,并且如果它的public只返回PUBLIC TABLE的数据

this is my code 这是我的代码

if($search){
$search_str = '(user.name LIKE '%{$search}%'
                OR private.private_name LIKE '%{$search}%'
                OR public.public_name LIKE '%{search}%'
                )';
    $this->db->where($search_str,NULL,FALSE);

    $this->db->join("private","private.id = user.id","LEFT");
    $this->db->join("public","public.id = user.id","LEFT");
}

if my keyword is mode in search box it returns the private mode and public mode 如果我的关键字是搜索框中的mode ,则返回private modepublic mode

$search_str = '(user.name LIKE '%{$search}%'
                OR (private.private_name LIKE '%{$search}%' AND user.mode = 'private')
                OR (public.public_name LIKE '%{search}%' AND user.mode = 'public')
                )';

In this line OR (private.private_name LIKE '%{$search}%' AND user.mode = 'private') it will check the data in MODE COLUMN in USER TABLE if its equal to private and then proceed to PRIVATE TABLE to find the specified pattern of a keyword in a PRIVATE NAME COLUMN . 在此行OR (private.private_name LIKE '%{$search}%' AND user.mode = 'private') ,它将检查USER TABLE MODE COLUMN中的数据是否等于private ,然后进入PRIVATE TABLE查找PRIVATE NAME COLUMN keyword的指定模式。

And in this line OR (public.public_name LIKE '%{$search}%' AND user.mode = 'public') it will check the data in MODE COLUMN in USER TABLE if its equal to public and then proceed to PUBLIC TABLE to find the specified pattern of a keyword in a PUBLIC NAME COLUMN . 在这行OR (public.public_name LIKE '%{$search}%' AND user.mode = 'public') ,它将检查USER TABLE MODE COLUMN中的数据是否等于public ,然后进行PUBLIC TABLE以在PUBLIC NAME COLUMN找到keyword的指定模式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM