选择嵌套HABTM数组的特定字段

时间:2011-02-10 20:26:35

标签: php cakephp paginate

我有一张票表和一张联系表。一张票可以有很多联系人。

我正在对ticket表进行分页,并希望它选择特定的字段,包括嵌套数组的第一个链接的联系人。无论我尝试什么,我似乎无法想出这一个(或者甚至可能)。

我的代码:

$this->paginate = array(<br>
    'conditions' => array('status_id !=' => '3'),<br>
    'limit'=>50,<br>
    'fields'=>array('Ticket.title', 'Ticket.ticket_number', 'Priority.name', 'Status.name', 'Contact.0.full_name')  <br>            
);

(Contact.0.full_name导致它失败。我怎样才能使它工作?)

因此,我可以将此列与$this->Paginator->sort一起使用。

1 个答案:

答案 0 :(得分:0)

cant 调用这样的列Contact.0.full_name CakePHP不能那样工作。有效的字段名称为TableAlias.column_name

您无法将hasMany关系的子项用于排序操作。

要实现类似功能,您可以删除hasMany并添加hasOne以获得所需的输出。因为两种关系类型都没有架构更改。

$this->Ticket->unbindModel(array('hasMany' => array('Contact')));
$this->Ticket->bindModel(array('hasOne' => array('Contact')));
$this->paginate = array(
    'conditions' => array('status_id !=' => '3'),
    'limit'=>50,
    'fields'=>array('Ticket.title', 'Ticket.ticket_number', 'Priority.name',  'Status.name', 'Contact.full_name')
);

现在,您可以使用此列Contact.full_name进行排序。