Ive eine HABTM Beziehung, in der die Ausgabe wie unten ist, was ich tun möchte, ist cackephp, eine "Liste" mit nur den "friend.id" und "friend.company_name" zurückzugeben und schließe den "Benutzer" aus.HABTM finden, wie man die Resultate filtert
Ive verbrachte eine ganze Weile damit, zu erforschen, wie man das macht und kann es nicht zum Laufen bringen.
Meine "Suchmethode" in Benutzer-Controller; Ich denke, dass ich das containable Verhalten verwenden muss, aber ich bin nicht sicher, was zu tun ist. ive schaffte es, die "Freund" -Ergebnisse nur 2 Felder anzeigen zu lassen, aber ich muss die "User" -Ergebnisse loswerden. Wie mache ich das?
Die Beziehung ist wie in der Benutzermodelldatei definiert.
var $hasAndBelongsToMany = array(
'Friend' => array(
'joinTable' => 'retailerrelationships',
'className' => 'User',
'foreignKey' => 'retailer_id',
'associationForeignKey' => 'supplier_id'
)
);
Benutzeraktion in Benutzer-Controller:
$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);
Debug-Output
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
)
)
)
)
)
es nur knapp sein Ziel für mich Arbeit :( –
Können Sie mehr ins Detail gehen? Zuerst habe ich '$ results' statt Ihrer' $ Benutzer 'var. Außerdem müssen Sie zuweisen es so '$ options = Set :: kombinieren ...', etc. Haben Sie die Ausgabe debuggen, um zu sehen, was es Ihnen gab? – jeremyharris
eigentlich hatten Sie Recht mein schlechtes Ich änderte meinen Fund zu "ersten" und es funktioniert dank –