HABTM temukan, cara memfilter hasilnya

Saya memiliki hubungan HABTM yang hasilnya seperti di bawah ini, yang ingin saya lakukan adalah membuat cakephp mengembalikan "daftar" hanya dengan "friend.id" dan "friend.company_name" dan mengecualikan "Pengguna".

Saya telah menghabiskan cukup banyak waktu untuk meneliti cara melakukan ini dan tidak berhasil.

"Metode pencarian" saya di pengontrol pengguna; Saya rasa saya perlu menggunakan perilaku yang dapat ditahan tetapi saya tidak yakin harus berbuat apa. Saya berhasil mendapatkan hasil "teman" hanya menampilkan 2 bidang tetapi saya harus menghilangkan hasil "Pengguna". Bagaimana saya melakukan ini?

Hubungan tersebut didefinisikan seperti dalam file model pengguna;

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

tindakan pengguna di pengontrol pengguna:

$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); 

men-debug Keluaran

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
                                )

                        )

                )

        )

)

person fuzzy dunlop    schedule 28.03.2012    source sumber


Jawaban (1)


Anda harus melihat kelas Set.

Coba ini

Set::combine($results, '{n}.Friend.id', '{n}.Friend.company_name');
person jeremyharris    schedule 28.03.2012
comment
Bisakah Anda menjelaskan lebih detail? Pertama, saya menggunakan $results alih-alih $users var Anda. Selain itu, Anda perlu menetapkannya menjadi $options = Set::combine..., dll. Apakah Anda men-debug output untuk melihat apa yang diberikannya kepada Anda? - person jeremyharris; 28.03.2012
comment
sebenarnya Anda benar, kesalahan saya, saya mengubah temuan saya menjadi yang pertama dan berfungsi, terima kasih - person fuzzy dunlop; 28.03.2012