Cakephp HABTM分页分拣不工作?

Cakephp HABTM分页分拣不工作?,cakephp,Cakephp,我对蛋糕的分页和排序有问题。我可以使用第一个表进行排序,但如果我尝试使用第二个表进行排序,则无法进行排序 我有以下表格(以及相应的型号): 用户:id,用户名 用户\公司:id,用户\ id,公司\ id 公司:身份证,姓名 所以这很好: $this->User->find("all"); Pagination也可以正常工作: $this->Paginator->settings = array('sort'=>'User.username'); $this-&g

我对蛋糕的分页和排序有问题。我可以使用第一个表进行排序,但如果我尝试使用第二个表进行排序,则无法进行排序

我有以下表格(以及相应的型号): 用户:id,用户名 用户\公司:id,用户\ id,公司\ id 公司:身份证,姓名

所以这很好:

$this->User->find("all");
Pagination也可以正常工作:

$this->Paginator->settings = array('sort'=>'User.username');
$this->Paginator->paginate();
但如果我尝试按公司名称排序,我会得到一个错误:

$this->Paginator->settings = array('sort'=>'Company.name');
$this->Paginator->paginate();
错误:SQLSTATE[42S22]:未找到列:1054未知列 “订单子句”SQL查询中的“Company.name”:选择
User
id
用户
电子邮件,
用户
用户名,
用户
密码,
用户
角色,
用户
创建
用户
修改
cakeblog
用户
作为
用户
其中1=1由
公司
名称
asc限额20订购

为什么不起作用?

我的用户模型HABTM如下所示:

public $hasAndBelongsToMany = array(
    'Company'=>array(
        'with'=>'UserCompanies'
        )
    );
在公司中:

public $hasAndBelongsToMany = array(
    'User' => array(
        'with' => 'UserCompanies',
        )
    );

没有排序的默认查询是:(are,因为tehre实际上是两个查询):

问题2:

SELECT `Company`.`id`, `Company`.`name`, `CompaniesUser`.`id`, `CompaniesUser`.`user_id`, `CompaniesUser`.`company_id` FROM `cakeblog`.`companies` AS `Company` JOIN `cakeblog`.`companies_users` AS `CompaniesUser` ON (`CompaniesUser`.`user_id` IN (14, 16, 17) AND `CompaniesUser`.`company_id` = `Company`.`id`)

我最终创建了两个连接。现在它可以像预期的那样工作,我可以使用Company.name或任何其他字段进行排序:

    $joins = array();
    $joins[] = array(
        'table'=>'companies_users',
        'alias'=>'CompanyUser',
        'type'=>'LEFT',
        'conditions'=>array(
            'CompanyUser.user_id = User.id'
            )
        );

    $joins[] = array(
        'table'=>'companies',
        'alias'=>'Company',
        'type'=>'LEFT',
        'conditions'=>array(
            'CompanyUser.company_id = Company.id')
        );

    $this->Paginator->settings = array('sort'=>'Company.name', 'joins'=>$joins);
    $x = $this->paginate();
    debug($x);
    $joins = array();
    $joins[] = array(
        'table'=>'companies_users',
        'alias'=>'CompanyUser',
        'type'=>'LEFT',
        'conditions'=>array(
            'CompanyUser.user_id = User.id'
            )
        );

    $joins[] = array(
        'table'=>'companies',
        'alias'=>'Company',
        'type'=>'LEFT',
        'conditions'=>array(
            'CompanyUser.company_id = Company.id')
        );

    $this->Paginator->settings = array('sort'=>'Company.name', 'joins'=>$joins);
    $x = $this->paginate();
    debug($x);