php Codeigniter $this->db->order_by(' ','desc') 结果不完整
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15272321/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Codeigniter $this->db->order_by(' ','desc') result is not complete
提问by Eli
I want to sort my database values in descending order using this query below in my model. However, it doesn't completely sort in descending order all the values in the database but when ascending is used, it works well.
我想在我的模型中使用下面的这个查询按降序对我的数据库值进行排序。但是,它并没有完全按降序对数据库中的所有值进行排序,但是当使用升序时,它运行良好。
function sort_all_courses_desc($tennant_id)
{
$this->db->select('*');
$this->db->where('tennant_id',$tennant_id);
$this->db->order_by("course_name","desc");
$this->db->from('courses');
$query=$this->db->get();
return $query->result();
}
回答by Marin Sagovac
Put from before where, and order_by on last:
放在 where 之前,order_by 放在最后:
$this->db->select('*');
$this->db->from('courses');
$this->db->where('tennant_id',$tennant_id);
$this->db->order_by("UPPER(course_name)","desc");
Or try BINARY:
或尝试二进制:
ORDER BY BINARY course_name DESC;
You should add manually on codeigniter for binary sorting.
您应该在 codeigniter 上手动添加以进行二进制排序。
And set "course_name" character column.
并设置“course_name”字符列。
If sorting is used on a character type column, normally the sort is conducted in a case-insensitive fashion.
如果对字符类型列使用排序,则通常以不区分大小写的方式进行排序。
What type of structure data in courses table?
课程表中的结构数据类型是什么?
If you frustrated you can put into array and return using PHP:
如果您感到沮丧,您可以放入数组并使用 PHP 返回:
Use natcasesort for order in "natural order": (Reference: http://php.net/manual/en/function.natcasesort.php)
使用 natcasesort 进行“自然顺序”排序:(参考:http://php.net/manual/en/function.natcasesort.php )
Your array from database as example: $array_db = $result_from_db:
数据库中的数组作为示例$array_db = $result_from_db::
$final_result = natcasesort($array_db);
print_r($final_result);
回答by fazalerabbi
Put the line
$this->db->order_by("course_name","desc");at top of your query. Like
将该行
$this->db->order_by("course_name","desc");放在查询的顶部。喜欢
$this->db->order_by("course_name","desc");$this->db->select('*');
$this->db->where('tennant_id',$tennant_id);
$this->db->from('courses');
$query=$this->db->get();
return $query->result();
回答by Narottam Sahoo
$this->db1->where('tennant_id', $tennant_id);
$this->db1->order_by('id', 'DESC');
return $this->db1->get('courses')->result();

