Hallo ZUsammen,
ich habe mir die letzten zwei Tage mit Doku und Google um die Ohren geschlagen um heraus zu finden was ich falsch mache. Leider ohne Erfolg.
Mein Problem:
Ich möchte zwei Tabellen über eine Many_Many Relation miteinander verbinden. Dazu habe ich die folgenden drei Tabellen angelegt:
Ausschnitt Tabelle mitglieder:
CREATE TABLE IF NOT EXISTS `mitglieder` (
  `id` varchar(150) COLLATE utf8_bin NOT NULL,
  `last_edit` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `starttime` date NOT NULL,
  `endtime` date NOT NULL,
  `disable` tinyint(4) unsigned NOT NULL DEFAULT '0',
  ...,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Ausschnitt Tabelle mitglieder_lizenzen:
CREATE TABLE IF NOT EXISTS `mitglieder_lizenzen` (
  `mitglieder_id` varchar(150) COLLATE utf8_bin NOT NULL,
  `lizenzen_id` int(10) NOT NULL,
  PRIMARY KEY (`mitglieder_id`,`lizenzen_id`),
  KEY `lizenzen_id` (`lizenzen_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Ausschnitt Tabelle lizenzen:
CREATE TABLE IF NOT EXISTS `lizenzen` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `last_edit` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  ...
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=4 ;
Im Mitglieder Model steht unter Relation:
public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
		    'lizenzen'=>array(self::MANY_MANY, 'Lizenzen', 
                                'mitglieder_lizenzen(mitglieder_id, lizenzen_id)',
                                'together' => true),
        );
}
Und bei dem Lizenzen Model:
public function relations()
{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
	return array(
           'mitglieder'=>array(self::MANY_MANY, 'Mitglieder', 
                   'mitglieder_lizenzen(mitglieder_id,lizenzen_id)'),
        );
}
Wenn ich nun dies in einer View über folgenden Code aufrufe:
<?php
$this->renderPartial('_mitgliederlizenzen',array(
            'mitglieder'=>$model,
            'lizenz'=>$model->lizenzen,
        ), true);
		
?>
wird folgendes Query erzeugt:
Querying SQL: SELECT `t`.`id` AS `t0_c0`, `t`.`last_edit` AS `t0_c1`,
`lizenzen`.`id` AS `t1_c0`,
`lizenzen`.`last_edit` AS `t1_c1`, `lizenzen`.`name` AS `t1_c6`,
`lizenzen`.`sort` AS `t1_c7` FROM `mitglieder` `t`  LEFT OUTER JOIN
`mitglieder_lizenzen` `lizenzen_lizenzen` ON
(`t`.`id`=`lizenzen_lizenzen`.`mitglieder_id`) LEFT OUTER JOIN `lizenzen`
`lizenzen` ON (`lizenzen`.`id`=`lizenzen_lizenzen`.`lizenzen_id`)  WHERE
(`t`.`id`='FSG-MG-3e5c8abd-2d55-6b68-eaf9-0000425c2663')
Wenn ich mir die das Query anschaue stelle ich fest, dass er mir lizenzen_lizenzen zusammen bastelt aber leider nicht mitglieder_lizenzen. Hier läuft irgendwas falsch. Er verdoppelt einfach den gewählten Namen aus dem Model
Was mache ich Falsch?
Vielen Dank für euere Hilfe.
Gruß nz-duck