Codeigniter 不会 select 日期小于 2019 的数据,其中某些类型来自 table
Codeigniter do not select the data whose date is less than 2019 which have some types from joined table
我正在处理 Codeigniter rest API 项目并遇到了一个问题。
我希望我的模型不要 select 注册日期小于 01/01/2019 且其类型在连接 table 等于 type_1 type_2 的数据,但是如果注册日期小于 2019 且加入 table 中的类型等于 type_3,type_4 请求必须 return 记录。
所以我尝试了这个方法我怎么能得到这个结果?
code: // MyModel
function get_data() {
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
if ($id != null) {
$this->db->where('ID',$id);
$result = $this->db->select('POST.ID,POST.DATE,'
. ' TYPE.Post_Type P_TYPE,)
->join('TYPE', 'POST.TYPE_ID = TYPE.ID', 'left')
->order_by('POST.ID', 'DESC')
->where_in('POST.Post_Type = type_1, type_2')
->where('POST.DATE<', "to_date('01/01/19', 'DD/MM/RR')", FALSE)
->get('POST');
}
return $result;
}
所以我希望它不是 return 使用 type_1 type_2 的数据,这些数据小于 2019,但可以得到其他类型
首先,如果您想要大于该日期,为什么要在小于 post.date 的地方过滤?。
其次,where_in 确实接受值作为第二个参数的数组。
这是我的代码,我将您的代码重新组织为可读性更强的代码。如果您尝试在时间戳或日期字段中查询日期,则格式应为 Y-m-d
function get_data() {
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
$types = array('type_1', 'type_2');
if ($id != null) {
$this->db->where('ID',$id);
$this->db->select('POST.ID, POST.DATE, TYPE.Post_Type as P_TYPE,', FALSE);
$this->db->join('TYPE', 'POST.TYPE_ID = TYPE.ID', 'left');
$this->db->order_by('POST.ID', 'DESC');
$this->db->where_in('POST.Post_Type', $types);
$this->db->where('POST.DATE >', date('Y-m-d', strtotime('01-01-2019')) );
$this->db->from('POST');
$result = $this->db->get();
}
return $result;
}
我正在处理 Codeigniter rest API 项目并遇到了一个问题。 我希望我的模型不要 select 注册日期小于 01/01/2019 且其类型在连接 table 等于 type_1 type_2 的数据,但是如果注册日期小于 2019 且加入 table 中的类型等于 type_3,type_4 请求必须 return 记录。
所以我尝试了这个方法我怎么能得到这个结果?
code: // MyModel
function get_data() {
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
if ($id != null) {
$this->db->where('ID',$id);
$result = $this->db->select('POST.ID,POST.DATE,'
. ' TYPE.Post_Type P_TYPE,)
->join('TYPE', 'POST.TYPE_ID = TYPE.ID', 'left')
->order_by('POST.ID', 'DESC')
->where_in('POST.Post_Type = type_1, type_2')
->where('POST.DATE<', "to_date('01/01/19', 'DD/MM/RR')", FALSE)
->get('POST');
}
return $result;
}
所以我希望它不是 return 使用 type_1 type_2 的数据,这些数据小于 2019,但可以得到其他类型
首先,如果您想要大于该日期,为什么要在小于 post.date 的地方过滤?。 其次,where_in 确实接受值作为第二个参数的数组。 这是我的代码,我将您的代码重新组织为可读性更强的代码。如果您尝试在时间戳或日期字段中查询日期,则格式应为 Y-m-d
function get_data() {
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
$types = array('type_1', 'type_2');
if ($id != null) {
$this->db->where('ID',$id);
$this->db->select('POST.ID, POST.DATE, TYPE.Post_Type as P_TYPE,', FALSE);
$this->db->join('TYPE', 'POST.TYPE_ID = TYPE.ID', 'left');
$this->db->order_by('POST.ID', 'DESC');
$this->db->where_in('POST.Post_Type', $types);
$this->db->where('POST.DATE >', date('Y-m-d', strtotime('01-01-2019')) );
$this->db->from('POST');
$result = $this->db->get();
}
return $result;
}