使用LIKE语句无效的活动记录更新或删除

时间:2014-06-02 08:26:54

标签: codeigniter activerecord

当我在我的DDBB中执行更新或删除并且我想使用LIKE语句时,不考虑这一点,并且只执行WHERE句子。

如果我运行以下查询:

$this->db->or_like('title', 'name');
$this->db->where('id <=', 9823);
$this->db->update('tabla_name', $data);

var_dump( $this->db->last_query() );

我收到以下查询,其中没有应用LIKE

UPDATE `tabla_name` SET `field1` = 'value1', `field2` = 'value21' WHERE `id` <= '9823'

DELETE子句也是如此,当使用 LIKE 时,活动记录不会被LIKE过滤器考虑在内。我使用的是系统核心版本2.0.2,但我在2.1.7中重现了同样的错误

1 个答案:

答案 0 :(得分:1)

经过一段时间的研究,我在Ellislab论坛上找到了以下解决方案:

http://ellislab.com/forums/viewthread/99235/P15

解决方案不是or_like也不是like,而是仅用于执行更新或删除时的句子:

$this->DB->or_where( $field . ' like', '%' . $value . '%' );
$this->DB->where( $field . ' like', '%' . $value . '%' );