Cakephp2 - 强大的数字自然排序

时间:2015-11-16 10:07:55

标签: php cakephp cakephp-2.0

我有这样的疑问:

$a = $this->Gallery->find('all',array (
        'conditions'=>array('Gallery.id'=>$matches[1]),
        'contain' => array('Photo'=>array('fields'=>array('Photo.name'),
            'order'=>array('Photo.name'=>'ASC')
        ))));

此代码按ID和相关照片获取画廊。我想按照名字对照片进行排序,现在我举例说明:

1.JPG 11.JPG 12.JPG 2.JPG

所以,正如你所看到的,这不是自然的排序。我正在寻找信息,我怎么能存档这个,但没有成功。我想,我需要修改:

'order'=>array('Photo.name'=>'ASC')

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

不确定这是否完全有助于您的问题,但您可以尝试通过首先按长度排序来应用MySQL数据库的自然排序: -

'order' => array(
    'LENGTH(Photo.name)' => 'ASC',
    'Photo.name' => 'ASC'
)

答案 1 :(得分:1)

我认为您需要尝试以下代码。

只是一个区别。 /* Basic Styling ----------------------------------------------------------------------------------------------------*/ input[type="radio"], input[type="checkbox"] { display: none; } input[type="radio"] + label, input[type="checkbox"] + label { margin-right: 20px; padding-left: 30px; cursor: pointer; display: inline-block; position: relative; } input[type="radio"] + label:before, input[type="checkbox"] + label:before, input[type="radio"] + label:after, input[type="checkbox"] + label:after { width: 20px; height: 20px; content: ''; top: 0; left: 0; color: #fafafa; text-align: center; position: absolute; -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } /* Radios ----------------------------------------------------------------------------------------------------*/ input[type="radio"] + label:before { border: 1px solid #eee; border-radius: 50%; box-shadow: inset 0 0 0 0.4em #fafafa, inset 0 0 0 1em #fafafa; } input[type="radio"] + label:hover:before { border: 1px solid #eee; border-radius: 50%; box-shadow: inset 0 0 0 0.4em #fafafa, inset 0 0 0 1em #eee; } input[type="radio"]:checked + label:before { border: 1px solid #2196F3; border-radius: 50%; box-shadow: inset 0 0 0 0.4em #fafafa, inset 0 0 0 1em #2196F3; } /* Checkboxes ----------------------------------------------------------------------------------------------------*/ input[type="checkbox"] + label:before { font-family: 'Material Icons'; font-size: 18px; content: '\E876'; border: 1px solid #eee; border-radius: 2px; background: #fafafa; } input[type="checkbox"] + label:hover:before { color: #eee; } input[type="checkbox"]:checked + label:before { color: #2196F3; }

'order'=>array('FIELD(Photo.name)'=>'ASC')

希望它对你有用。 如果您没有解决问题,请告诉我。

感谢。