我想使用表单字段FROMDATE
和TODATE
创建日期过滤器。
这将提供从开始日期到结束日期范围的结果。
这是我的模特
function search($status,$from,$to){
if( $status =="" || $from =="" || $to =="") {
$this->db->select('a.*');
$this->db->from('acc a');
}
if( $status !="" || $from !="" || $to !="") {
$this->db->like('status', $status);
$this->db->where('fromdate <=',$from);
$this->db->where('todate >=',$to);
}
$result = $this->db->get();
//echo $this->db->last_query();
return $result->result();
}
我的问题是我没有看到任何结果。有谁看到我的错误是什么?
答案 0 :(得分:1)
如果您声明一个表的简称,那么您必须使用它。您将acc
表的简称声明为a
。
因此,您必须在like
和where
中使用它,如下所示:
$this->db->like('a.status', $status);
$this->db->where('a.fromdate <=', $from);
$this->db->where('a.todate >=', $to);
也许你的问题是DATE的格式。我假设您使用DATE
作为数据库中的行类型。您的DATE
行可能使用YYYY-mm-dd
格式。如果您的$from
或$to
变量不使用此格式,则此查询将不正确。
您可以将其打印到控制器(然后是die();
)或日志文件中进行检查。您可以使用该命令从任何地方记录任何内容(如果您在application/config.php
中启用它):
log_message("error", "this is the text of your log message from date: " . $from . ", and to date: " . $to);
日志文件位于application/logs
文件夹中。
最好使用AND(if statement
)运算符声明&&
,因为在此函数中,您必须声明所有变量。
我希望我能帮你解决这个问题。