Zend_Db n:n Tabellen Beziehung

danza

Erfahrenes Mitglied
Hi,

folgendes Problem ich versuch 3 Tabellen im Zend Framwork abzufragen, sodass ich als Ergebnis, die Daten von dem Album + den Tags bekomme.

Album und Tags sind eine n:n Beziehung, sie werden über die Hilfstabelle alben_R_tags verknüpft.

Im Moment stecke ich im Controller fest, da ich nicht weiß wie ich das Abfragen kann. Ich denke die Modeleinstellungen sind soweit richtig. Ich hoffe ihr könnt mir helfen.

mfg
danza

Tabellen (Primärschlüssel fett):
Code:
alben:
+----+--------------+----------------+
| id |    artist    |     title      |
+----+--------------+----------------+
| 1  | Duffy        | Rockferry      |
| 2  | Van Morrison | Keep It Simple |
+----+--------------+----------------+

alben_R_tags:
+---------+--------+
| F_alben | F_tags |
+---------+--------+
| 1       | 1      | 
| 2       | 1      |
| 2       | 2      |
+----+-------------+

tags:
+----+---------+
| id | tagname |
+----+---------+
| 1  | test    | 
| 2  | tagNr2  |
+----+---------+

Model von der alben Tabelle
PHP:
<?php
class Alben Extends Zend_Db_Table
{
	protected $_name 		= 'alben';
	protected $_primary		= 'id';
	protected $_sequence		= true;
	protected $_dependetTables	= array('AlbenRTags');
}

Model von der alben_R_tags Tabelle
PHP:
<?php
class AlbenRTags Extends Zend_Db_Table
{
	protected $_name 		= 'alben_R_tags';
	protected $_primary		= array('F_alben','F_tags');
	protected $_sequence		= true;
	protected $_referenceMap	= array(
						'Alben'=>array(
							'columns'=>'F_alben',
							'refTableClass'=>'Alben',
							'refColumn'=>'id',
							'onDelete'=>self::CASCADE,
							'onUpdate'=>self::CASCADE
						),
						'Tags'=>array(
							'columns'=>'F_tags',
							'refTableClass'=>'Tags',
							'refColumn'=>'id',
							'onDelete'=>self::CASCADE,
							'onUpdate'=>self::CASCADE
						)
					);
}

Model von der tags Tabelle
PHP:
<?php
class Tags Extends Zend_Db_Table
{
	protected $_name 		= 'tags';
	protected $_primary		= 'id';
	protected $_sequence		= true;
	protected $_dependetTables	= array('AlbenRTags');
}

AlbenController:
PHP:
<?php
class AlbenController extends Zend_Controller_Action 
{
    public function indexAction() 
    {
	$this->view->title = "Meine Alben";

	$alben = new Alben();
	$rows = $alben->fetchAll();
	foreach($rows AS $row) {
		echo $row->findParentRow('AlbenRTags');
	}
/*  $albenRTags = new AlbenRTags();
	$data = $albenRTags->fetchAll();
	foreach($data AS $albenRTag) {
		$tag = $albenRTag->findParentRow('Tags');
		$album = $albenRTag->findParentRow('Alben');
		$alben[$albenRTag->F_alben][tag] = $tag->tagname;
		$alben[$albenRTag->F_alben][title] = $album->title;
	}*/
//	$this->view->alben = $alben->fetchAll();
    }
}
 
Zurück