Yii Framework - CGridView verbundene Spalten Sortieren
Vielen Dank im Voraus für wer kann helfen. Ich habe die Suche nach einer Antwort, aber habe noch nicht gefunden, doch. Ich habe laufen in "Lösungen", die nicht gearbeitet habe, die aus 1 Zeile neu schreiben die gesamte Klasse.
Habe ich das "grid", um die Beziehung, und bin in der Lage, verwenden Sie die Suchfunktion. Was ich nicht herausfinden kann, ist die sort-Funktion. Die Spaltenüberschrift wird nicht anklickbar, sobald die nachstehenden änderungen vorgenommen wurden.
Dies ist, was ich habe:
Den Namen der Beziehung/label ist "Unternehmen", das setup im Mitarbeiter-Modell.
Tabelle: Mitarbeiter -- Spalte: idCompany
&
Tabelle: Unternehmen -- Spalte: companyNick
admin.php - ANSICHT
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'employee-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'company',
'value'=>'$data->company->companyNick',
),
'lastName',
'firstName',
ETC...
Employee.php - MODELL
public function search()
{
//Warning: Please modify the following code to remove attributes that
//should not be searched.
$criteria=new CDbCriteria;
//Company Relation Search
$criteria->compare('company.companyNick',$this->company,true);
$criteria->with='company';
//stock
$criteria->compare('idEmployee',$this->idEmployee,true);
$criteria->compare('idAccount',$this->idAccount,true);
ETC...
InformationsquelleAutor Logan Klenner | 2011-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe die gleichen Probleme haben und am Ende löste es auf diese Weise:
Model Search Methode:
Datei anzeigen:
));
Diese Weise bin ich die Auswahl ein einzelnes Feld aus der verknüpften Tabelle in der order by-Klausel und dann die Bestellung durch, erstellen Sie die Tabellen-join in den Ausdruck, in diesem Fall ist es -
people.person_id = t.assigned_to
(wobei t eine alias-Tabelle zur Verfügung gestellt von yii). Dies ist vielleicht nicht der effizienteste Weg, um den order by-Klausel, aber es funktioniert!InformationsquelleAutor Mike H
Scheint dies eine tägliche Frage auf [yii]. Streifen Zeug, was von der Suche-Funktion, und fügen Sie eine filter-Attribut, um Ihre CGridView Spalte etwa so:
Sie kann immer noch. Allerdings, wenn Sie Sortieren möchten den Firmennamen anstelle der foreign key, Sie müssen es zu hacken in Ihrem dataprovider (z.B. $model->search())
Ich fange auf dem richtigen Weg mit CSort... Sie sind nicht sehr spezifisch. Vielen Dank für die erzählte mir, dass ich ändern müssen "etwas" zu machen, damit es funktioniert. Offensichtlich.
Wow, ich bin sicher, Sie bekommen eine Menge Kilometer aus der ganzen "ich bin ein unerträglicher, undankbar Ruck an alle, die versuchen mir zu helfen" shtick.
Gut, vielen Dank. Dann Lesen Sie die Frage das nächste mal, anstatt Antworten mit einer nichtssagenden Antwort auf welche nicht.
InformationsquelleAutor Ryan Bales
Es ist auch eine gute Erklärung, wie dies zu tun auf Yii web site Wiki-Seite:
http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/
InformationsquelleAutor zmilan
Ich mag Mike H seine Antwort. Ich möchte auch darauf hinweisen, dass Sie könnten, statt in die raw-SQL, Verwendung mit() zum durchführen einer relationalen Abfrage-und dann set wählen Sie false, um zu verhindern, dass tatsächlich laden die verwandten Modelle. Sie können auch die zugehörigen Attributs attributeLabel in der Ansicht, indem der Punkt notiert, string, z.B.:
InformationsquelleAutor Scott Gardner