2015-10-28 55 views
1

而经由框架生成查询笨在FIND_IN_SET添加IS NULL

$this->db->select('id,memo,sent_to,sent_by,read_by,date')->from('memos') 
    ->where("FIND_IN_SET('1',`sent_to`)")->order_by('`id`','DESC')->get(); 

我得到添加的误差为在查询NULL自动

它产生

SELECT `id`, `memo`, `sent_to`, `sent_by`, `read_by`, `date` FROM `memos` 
WHERE FIND_IN_SET('1',`sent_to`) IS NULL ORDER BY `id` DESC 

而不是

SELECT `id`, `memo`, `sent_to`, `sent_by`, `read_by`, `date` FROM `memos` 
WHERE FIND_IN_SET('1',`sent_to`) ORDER BY `id` DESC 

回答

2

您需要添加!=0是你where clause去除IS NULL

$this->db->select('id,memo,sent_to,sent_by,read_by,date')->from('memos') 
    ->where("FIND_IN_SET('1',`sent_to`)!=",0)->order_by('`id`','DESC')->get(); 
+0

刚刚升级到3.1.2,我发现这个问题真的很烦人。感谢您的解决方案。 –

1

使用此

$query = $this->db->query("SELECT * FROM memos WHERE FIND_IN_SET('1',sent_to) ORDER BY id DESC"); 
$result = $query->result_array(); 
return $result; 

result_array();本作将数据返回为目标阵列

+0

你检查过了吗? –

1

您只需编写串一个MySQL查询变量和使用 $this->db->query('');,而不是运行使用活动记录。

P/s:对不起,我英语不好。

3

以下代码100%的工作。 试试吧,

$this->db->select('id,memo,sent_to,sent_by,read_by,date'); 
    $this->db->from('memos'); 
    $this->db->where("FIND_IN_SET('1',`sent_to`) !=", 0); 
    $this->db->order_by('`id`','DESC'); 
    $this->db->get();