Hello I want to assign a contact person(german: "Ansprechpartner") to different kinds of a model. my model looks like this:
<pre> class Ansprechpartner extends AppModel { var $name = 'Ansprechpartner'; var $useTable = "ansprechpartner"; var $primaryKey = "ans_id"; var $recursive = 2; var $hasAndBelongsToMany = array( 'Kunde' => array('className' => 'Kunde', 'joinTable' => 'kunden_ansprechpartner', 'foreignKey' => 'ansprechpartner_id', 'associationForeignKey'=> 'kunden_id', 'uniq' => true), 'Traeger' => array('className' => 'Traeger', 'joinTable' => 'traeger_ansprechpartner', 'foreignKey' => 'ansprechpartner_id', 'associationForeignKey'=> 'traeger_id', 'uniq' => true, ), 'Verbund' => array('className' => 'Verbund', 'joinTable' => 'verbunde_ansprechpartner', 'foreignKey' => 'ansprechpartner_id', 'associationForeignKey'=> 'verbunde_id', 'uniq' => true, ) ); } </pre> one of the dependend models look like this ("Kunden" and "Verbund" look the same) <pre> class Traeger extends AppModel { var $useTable="traeger"; var $primaryKey="t_id"; var $name="Traeger"; var $displayField="t_name"; var $hasMany=array("Traegerzugehoerigkeit"=> array("className"=>"Traegerzugehoerigkeit", "foreignKey"=>"t_id")); var $hasAndBelongsToMany = array( 'Ansprechpartner' => array('className' => 'Ansprechpartner', 'joinTable' => 'traeger_ansprechpartner', 'foreignKey' => 'traeger_id', 'associationForeignKey'=> 'ansprechpartner_id', 'uniq' => true)); } </pre> One thing is, that only one of the dependend models id is given. My controller which saves the "Ansprechpartner" looks like this: <pre> // only the saving function shown: function view($id=null) { if(empty($this->params['data'])) { // edit record } else { // insert selector to which model should this Ansprechpartner be assigned // default should be Kunde $this->params['data']['Ansprechpartnerfunktion']['Ansprechpartnerfunktion']=array_unique(explode("|",$this->params['data']['Ansprechpartner']['selfunktionen'])); if(isset($this->params['data']['Traeger']) && strlen($this->params['data']['Traeger']['Traeger'])) { // if isset save to traeger $t_id=$this->params['data']['Traeger']['Traeger']; $this->params['data']['Traeger']['Traeger']=array($this->params['data']['Traeger']['Traeger']); print_r($this->params['data']['Traeger']['Traeger']); print_r($this->params['data']); $redirect="/Traeger/show/".$t_id; } else if(isset($this->params['data']['Verbund']) && strlen($this->params['data']['Verbund']['Verbund'])){ //if isset save to verbund // not implemented yet } else { // default save to kunde $this->params['data']['Kunde']['Kunde']=array($this->params['data']['Kunde']['Kunde']); $redirect="/Kunden/show"; } print_r($this->params['data']); $this->Ansprechpartner->Save($this->params['data']); exit; $this->redirect($redirect); } } </pre> this is what my $this->params['data'] looks like: <pre> Array ( [Ansprechpartner] => Array ( [ans_id] => [selfunktionen] => |2|4 [ans_name] => asdfasdfasdf [ans_vorname] => asdfasdfasdf [ans_anrede] => asdfasdfasdf [ans_titel] => asdfasdf [ans_abteilung] => asdfasdfasdfasdfasdfasasdfasdf [ans_vermerk] => asdfasdf [ans_tel] => [ans_mobil] => [ans_fax] => [ans_email] => ) [Kunde] => Array ( [Kunde] => ) [Ansprechpartnerfunktion] => Array ( [Ansprechpartnerfunktion] => Array ( [0] => [1] => 2 [2] => 4 ) ) [Traeger] => Array ( [Traeger] => Array ( [0] => 4 ) ) [Verbund] => Array ( [Verbund] => ) ) </pre> looks good, I think! what i expected it would do is: insert a new "Ansprechpartner" and insert a new record into my assignment table to the model "Traeger" (Table: traeger_ansprechpartner) and this is what debug=2 says in sql: <pre> 17 INSERT INTO `ansprechpartner` (`ans_name`,`ans_vorname`,`ans_anrede`,`ans_titel`,`ans_abteilung`,`ans_vermerk`) VALUES ('asdfasdfasdf','asdfasdfasdf','asdfasdfasdf','asdfasdf','asdfasdfasdfasdfasdfasasdfasdf','asdfasdf') 1 2 //ok, what i expected! 18 DELETE FROM `kunden_ansprechpartner` WHERE ansprechpartner_id = '73' 0 1 19 INSERT INTO `kunden_ansprechpartner` (ansprechpartner_id,kunden_id) VALUES ('73','2') 1 1 20 INSERT INTO `kunden_ansprechpartner` (ansprechpartner_id,kunden_id) VALUES ('73','4') 1 // oops first thing went wrong. "4" is the id for "Traeger", not for "Kunde" 1 21 DELETE FROM `ansprechpartner_ansprechpartner_funktionen` WHERE ans_id = '73' 0 1 22 INSERT INTO `ansprechpartner_ansprechpartner_funktionen` (ans_id,funk_id) VALUES ('73','4') 1 1 // also wrong, one is missing!! 23 DELETE FROM `traeger_ansprechpartner` WHERE ansprechpartner_id = '73' 0 1 // here the "Traeger" is completely missing!!!!! 24 DELETE FROM `verbunde_ansprechpartner` WHERE ansprechpartner_id = '73' // ok </pre> Dont know how this can be! Seems as if the given arrays to the save-method were shuffled! What´swrong? Thanks for your help felle --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php -~----------~----~----~----~------~----~------~--~---