ฉันมีความสัมพันธ์ HABTM โดยที่ผลลัพธ์เป็นดังนี้ สิ่งที่ฉันต้องการทำคือให้ cakephp ส่งคืน "รายการ" โดยมีเพียง "friend.id" และ "friend.company_name" และยกเว้น "ผู้ใช้"
ฉันใช้เวลาค่อนข้างนานในการค้นคว้าวิธีการทำเช่นนี้และไม่สามารถใช้งานได้
"วิธีการค้นหา" ของฉันในตัวควบคุมผู้ใช้ ฉันคิดว่าฉันจำเป็นต้องใช้พฤติกรรมที่สามารถกักเก็บได้ แต่ฉันไม่แน่ใจว่าต้องทำอย่างไร ฉันจัดการเพื่อให้ได้ผลลัพธ์ "เพื่อน" แสดงเพียง 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
)
)
)
)
)