如何在日期过滤器中获得结果?

时间:2016-04-20 04:34:51

标签: php codeigniter

我想使用表单字段FROMDATETODATE创建日期过滤器。

这将提供从开始日期到结束日期范围的结果。

这是我的模特

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();
}

我的问题是我没有看到任何结果。有谁看到我的错误是什么?

1 个答案:

答案 0 :(得分:1)

可能的问题#1

如果您声明一个表的简称,那么您必须使用它。您将acc表的简称声明为a。 因此,您必须在likewhere中使用它,如下所示:

$this->db->like('a.status', $status);
$this->db->where('a.fromdate <=', $from);
$this->db->where('a.todate >=', $to); 

可能的问题#2

也许你的问题是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)运算符声明&&,因为在此函数中,您必须声明所有变量。

我希望我能帮你解决这个问题。