HABTM查找,如何过滤结果

时间:2012-03-28 15:56:50

标签: cakephp cakephp-2.0 cakephp-appmodel

我有一个HABTM关系,输出如下所示,我想做的是让cakephp返回一个只有“friend.id”和“friend.company_name”的“列表”并排除“用户”。< / p>

我花了很长时间研究如何做到这一点并且无法让它发挥作用。

用户控制器中的“搜索方法”;我想我需要使用可包含的行为,但我不知道该怎么做。香港专业教育学院设法让“朋友”结果只显示2个字段,但我需要摆脱“用户”的结果。我该怎么做?

关系定义为用户模型文件;

var $hasAndBelongsToMany = array(
'Friend' => array(
    'joinTable' => 'retailerrelationships',
    'className' => 'User',
    'foreignKey' => 'retailer_id',
    'associationForeignKey' => 'supplier_id'
)
    );

用户控制器中的用户操作:

$this->User->Behaviors->attach('Containable');

$users=$this->User->find('all',array('conditions'=>array('User.id'=>$this->Auth->user('id')),'contain'=>array('Friend.id','Friend.company_name')));         
        $this->set('users' ,$users); 

调试输出

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 104
                    [username] => admin                    
                )

            [Friend] => Array
                (
                    [0] => Array
                        (
                            [id] => 107
                            [company_name] => carskitchens
                            [Retailerrelationship] => Array
                                (
                                    [id] => 12
                                    [retailer_id] => 104
                                    [supplier_id] => 107
                                    [created] => 2012-03-28 10:14:23
                                    [modified] => 2012-03-28 10:14:23
                                )

                        )

                    [1] => Array
                        (
                            [id] => 112
                            [company_name] => mr manufacturer
                            [Retailerrelationship] => Array
                                (
                                    [id] => 13
                                    [retailer_id] => 104
                                    [supplier_id] => 112
                                    [created] => 2012-03-28 11:26:52
                                    [modified] => 2012-03-28 11:26:52
                                )

                        )

                )

        )

)

1 个答案:

答案 0 :(得分:1)

您应该查看Set课程。

试试这个

Set::combine($results, '{n}.Friend.id', '{n}.Friend.company_name');