Hallo,
kann mir jemand helfen, folgendes umzusetzen. Ist ja wahrscheinlich kein Yii Problem, sondern ein DB-Verständnisproblem.
Ich habe Tabellen mit folgenden Fremdschlüsseln:
Tabelle Noten: Verlag_Id, Komponist_Id, Sammelheft_Id
Tabelle Sammelhefte: Verlag_Id
Tabelle Verlage
Tabelle Komponisten
Die Relationen im Model "Noten" habe ich so definiert:
public function relations()
{
return array(
'Komponist'=>array(self::BELONGS_TO, 'Komponisten', 'Komponist_Id'),
'Verlag'=>array(self::BELONGS_TO, 'Verlage', 'Verlag_Id'),
'Sammelheft'=>array(self::BELONGS_TO, 'Sammelhefte', 'Sammelheft_Id'),
);
}
Hier noch eine Relation aus dem Model "Sammelhefte":
public function relations()
{
return array(
'Verlag'=>array(self::BELONGS_TO, 'Verlage', 'Verlag_Id'),
);
}
In der Tabelle Noten gibt es "normale" Datensätze (Einzelhefte) und solche, welche ein Stück aus einem Sammelheft darstellen.
Nun möchte ich eine Noten-Ausgabe in Tabellenform haben mit dem Namen des Verlages. Je nach Datensatz soll in dieser Spalte der Verlag aus der Tabelle "Noten" bzw. aus der Tabelle "Sammelheft" stehen.
Folgende Methode im Model Noten liefert mir eine Ausgabe "Verlag", in der jeweils der Verlag aus der richtigen Tabelle stammt:
public function getVerlag() {
if ( $this->Sammelheft_Id > 0 ) $Verlag_Id = $this->Sammelheft->Verlag_Id;
else $Verlag_Id = $this->Verlag_Id;
$model = new Verlage;
$data=$model->findByPk($Verlag_Id);
return $data->Name;
}
Der Verlag wird von GridView richtig angezeigt.
Jedoch eine Suche in dieser Spalte bringe ich nicht zustande.
Ich nehme an, dass mein Ansatz falsch ist und dass man gleich über die Relationen die richtigen Spalten bekommt. Kann man so etwas mit ActivRecords machen?
Danke für jeden Tipp
Ferdinand