Frage

Schema:

CITY
ID (int)
Name (string)
Status (int)

CITY_STATUS
ID (int)
Name (string)
  1. Wenn ich eine Stadt anzuzeigen (in der Ansicht Ansicht), ich möchte den zugehörigen CITY_STATUS.Name Wert anzuzeigen, anstelle des CITY.Status Wert

  2. Wenn ich eine Stadt hinzufügen oder aktualisieren, möchte ich nach unten aller CITY_STATUS.Names im Drop-down

  3. einen Tropfen anzuzeigen

Wie kann ich das in Yü?

War es hilfreich?

Lösung

Ich glaube, ich es selbst würde antworten.

Frage 1

Die Beziehungen sind einfacher, wenn Sie Setup ein Fremdschlüssel in der Datenbank zuerst. Um dies zu tun, müssen MySQL (nicht SQLite) mit dem InnoDB-Engine (nicht MyISAM) und das betreffende Feld verwenden, muss auf sie einen Index. Dann Gii Willen Setup-Funktion die Beziehungen automatisch für Sie. Andernfalls müssen Sie es manuell in den Beziehungen zu tun haben () Funktion des Modells in Frage.

Um einen ähnlichen Wert in einer Ansicht verwenden:

In protected / views / [Modellname] /view.php, in der CDetailView Array-Attribute ändern

'Status'

array('label'=>'Status', 'value'=>$model->RelationName->Name)

wo RelationName ist der Name der Beziehung

Um einen ähnlichen Wert in einem Index anzeigen, ändern protected / views / [Modellname] / _ view.php (beachten Sie den Unterstrich), beispielsweise in diesem Fall benutzen würden Sie ändern

$data->Status

$data->RelationName->Name

Um einen ähnlichen Wert in einer Admin-Ansicht, in der CGridView verwenden Widget aufrufen, in der Spalten-Array ersetzen sagen wir

'Status'

mit

array('name'=>'Status', 'header'=>'Status', 'value'=>'$data->RelationName->Name')

(beachten Sie die Verwendung des Variable $ data, und nicht $ Modell oder $ Datenprovider sagen). Immer noch versuchen, herauszufinden, wie zu sortieren und zu filtern ...

Frage 2

Um ein Dropdown-Menü, in protected / views / [Modellname] / _ form.php:

Veränderung

<?php echo $form->textField($model,'Status'); ?>

<?php echo $form->dropDownList($model,'Status', CHtml::listData(Status::model()->findAll(), 'ID', 'Name')); ?>

el Chef, Sie sind ein Gentleman und ein Gelehrter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top