CakePHP可包含订单条件不工作

CakePHP可包含订单条件不工作,cakephp,containable,Cakephp,Containable,我对一个非常简单的排序查询有问题。我有一个带有HABTM关系的Post模型和一个Tag模型,我正试图返回一个包含指定标签的所有帖子的列表,按帖子创建日期排序 $this->set('data', $this->Post->Tag->find('all', array( 'conditions' => array('Tag.id' => 1), 'contain' => array('Post' => array( '

我对一个非常简单的排序查询有问题。我有一个带有HABTM关系的
Post
模型和一个
Tag
模型,我正试图返回一个包含指定标签的所有帖子的列表,按帖子创建日期排序

$this->set('data', $this->Post->Tag->find('all', array(
    'conditions' => array('Tag.id' => 1),
    'contain' => array('Post' => array(
        'order' => 'Post.created_date desc'
    ))
)));
虽然这会返回帖子列表,但不会按日期排序

启用调试后,似乎正在使用以下查询:

SELECT `Post`.`id`, `Post`.`title`, `Post`.`created_date`, `PostsTag`.`post_id`, `PostsTag`.`tag_id`
FROM `database`.`posts` AS `Post`
JOIN `database`.`posts_tags` AS `PostsTag` ON (`PotsTag`.`tag_id` = 1 AND `PostsTag`.`post_id` = `Post`.`id`)
邮政编码模式:

class Post extends AppModel {
    public $name = 'Post';
    public $hasAndBelongsToMany = array('Tag');
}
标签型号代码:

class Tag extends AppModel {
    public $name = 'Tag';
    public $hasAndBelongsToMany = array('Post');
}
在此问题上的任何帮助都将不胜感激——我正在使用CakePHP2.1。如果有什么区别的话。

我不认为“订单”应该在“包含”中。 尝试:

$this->set('data', $this->Post->Tag->find('all', array(
    'conditions' => array('Tag.id' => 1),
    'contain' => array('Post'),
    'order' => 'Post.created_date desc'
)));
或者只是:

 $this->set('data', $this->Post->Tag->find('all', array(
        'conditions' => array('Tag.id' => 1),
        'order' => 'Post.created_date desc'
 )));
我不认为“订单”应该在“包含”中。 尝试:

$this->set('data', $this->Post->Tag->find('all', array(
    'conditions' => array('Tag.id' => 1),
    'contain' => array('Post'),
    'order' => 'Post.created_date desc'
)));
或者只是:

 $this->set('data', $this->Post->Tag->find('all', array(
        'conditions' => array('Tag.id' => 1),
        'order' => 'Post.created_date desc'
 )));
请阅读以下内容:-

//试试这个

CREATE TABLE `tags` (
  `id` int(11) NOT NULL auto_increment,
  `tag` varchar(100) NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY  (`id`)
);


CREATE TABLE `posts_tags` (
  `post_id` int(11) NOT NULL,
  `tag_id` int(11) NOT NULL
);


//Creating the Models and Relationships

class Tag extends AppModel {
    var $name = 'Tag';
    var $hasAndBelongsToMany = array('Post'=>array('className'=>'Post'));
}

class Post extends AppModel {
    var $name = 'Post';
    var $hasMany = array('Comment'=>array('className'=>'Comment'));
    var $hasAndBelongsToMany = array('Tag'=>array('className'=>'Tag'));
}
请阅读以下内容:-

//试试这个

CREATE TABLE `tags` (
  `id` int(11) NOT NULL auto_increment,
  `tag` varchar(100) NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY  (`id`)
);


CREATE TABLE `posts_tags` (
  `post_id` int(11) NOT NULL,
  `tag_id` int(11) NOT NULL
);


//Creating the Models and Relationships

class Tag extends AppModel {
    var $name = 'Tag';
    var $hasAndBelongsToMany = array('Post'=>array('className'=>'Post'));
}

class Post extends AppModel {
    var $name = 'Post';
    var $hasMany = array('Comment'=>array('className'=>'Comment'));
    var $hasAndBelongsToMany = array('Tag'=>array('className'=>'Tag'));
}

在标记模型中定义订单属性如何?
比如

var $hasAndBelongsToMany = array(
    'Post' => array(
        'order' => 'Post.created_date'
    )
);

在标记模型中定义订单属性如何?
比如

var $hasAndBelongsToMany = array(
    'Post' => array(
        'order' => 'Post.created_date'
    )
);

感谢您的快速回复-我尝试了您的建议,但都产生了错误:错误:SQLSTATE[42S22]:未找到列:1054“order子句”中的未知列“Message.created_date”:SQL查询:选择Tag.id,Tag.name FROM database.tags作为Tag,其中Tag.id=1 order BY Post.created_date descNo problem.:)嗯,我有一些想法,但我必须看到一个数据库和代码。你可以将我添加到MSN、Facebook或Skype上(或者给我发一封电子邮件),给我更多关于DB和代码的信息。我会尝试解决这个问题,我会把解决方案放在这里,这样任何人都可以看到。嗨,Davor,我已经通过电子邮件向你发送了代码-如果你能帮助,请在堆栈溢出上发布你的答案,我会接受。我会的,但我现在很忙。我将在几个小时后回复您。感谢您的快速回复-我尝试了您的建议,并且都产生了错误:错误:SQLSTATE[42S22]:未找到列:1054未知列“Message.created_date”在“order子句”:SQL查询:SELECT Tag.id,Tag.name FROM database.tags AS Tag,其中Tag.id=1 ORDER BY Post.created\u date desc无问题:)嗯,我有一些想法,但我必须看到一个数据库和代码。你可以将我添加到MSN、Facebook或Skype上(或者给我发一封电子邮件),给我更多关于DB和代码的信息。我会尝试解决这个问题,我会把解决方案放在这里,这样任何人都可以看到。嗨,Davor,我已经通过电子邮件向你发送了代码-如果你能帮助,请在堆栈溢出上发布你的答案,我会接受。我会的,但我现在很忙。我会在几个小时内回复你。请看下面的网址:-你好,阿比德,我已经查看了CakePHP网站上的HABTM页面,但没有看到任何关于使用类似条件对结果进行排序的参考-请您指出与我的查询相关的区域。请确定:您是否声明标记模型$actsAs可包含?请参见下面的url:-你好,阿比德,我已经查看了CakePHP网站上的HABTM页面,但没有看到任何关于使用类似条件对结果进行排序的参考-请您指出与我的查询相关的区域。请确定:您是否声明标记模型$actsAs是可包含的?感谢您的回复-虽然这解决了我最初的查询,我希望能够动态设置顺序,例如,可以按标题或其他列以及创建日期对文章进行排序。@Loftx然后只需绑定模型DynamicAllyTanks以供您响应-这解决了我最初的查询,我希望能够动态设置顺序,例如,可以按标题或其他列以及创建日期对文章进行排序。@Loftx然后动态绑定模型