【发布时间】:2018-08-31 02:07:27
【问题描述】:
我目前正在开发一个 Codeigniter 3 项目,该项目使用数据表进行实时搜索值,该项目在 MySQL 上并且一切正常,它必须迁移到 PostgreSQL,现在搜索不起作用,因为需要要在 ID 列中添加显式类型转换,这是错误:ERROR: operator does not exist: integer ~~ text.
我想出了如何通过在 de 列名之后添加 ::varchar 来实现它,我测试了它直接在 PHPpgadmin 上输入查询并且它可以工作,但我找不到我到底是怎么做到的在 CI 代码中执行此操作
这是代码
$datatable->db_search(array(
"consultas.nombre",
"usuarios.username",
"u2.username",
"consultas.guest_email",
"consultas.last_reply_string",
"consultas.ID",
)
);
db_search 函数
public function db_search($columns)
{
if(!empty($this->search)) {
if($this->search_type == 0) {
// Search all columns for likeness
$words = explode(" ", $this->search);
$this->CI->db->group_start();
foreach($words as $word) {
foreach($columns as $field) {
$this->CI->db->or_like($field, $word);
}
}
$this->CI->db->group_end();
} elseif($this->search_type == 1) {
// Search all colums for likeness for whole string
$this->CI->db->group_start();
foreach($columns as $field) {
$this->CI->db->or_like($field, $this->search);
}
$this->CI->db->group_end();
} else {
// Search for each individual column.
// First 2 indexes are reserved for above
if(isset($columns[$this->search_type-2])) {
$this->CI->db->group_start();
$this->CI->db->or_like($columns[$this->search_type-2], $this->search);
$this->CI->db->group_end();
}
}
}
}
已经试过了:
"consultas.ID::varchar",
"'consultas.ID', '1011%'"
【问题讨论】:
-
请发
$datatable->db_search()的代码
标签: postgresql codeigniter codeigniter-3