YII + beforeSave() + erste max-Wert aus einer Zeile in der Tabelle
ich bin kämpfen, um meinen beforesave in Yii-Framework arbeitet auf diese Weise:
wenn der Benutzer sendet das Formular, beforesave() Holen soll, die höchste Zahl in einer Spalte mit der Bezeichnung "bestellen" und legen Sie den Wert um+1 in der aktuellen 'Ordnung' Feld.
Nach ein paar Stunden damit verbracht, hier zu Lesen Beiträge, die ich geschafft zu kompilieren dieser Sache:
public function beforeSave()
{
if (parent::beforeSave())
{
if($this->isNewRecord)
{
$criteria->select='max(order) as myMaxOrder';
$get_it= new CActiveDataProvider(get_class($this),
array('criteria'=>$criteria,));
$got_it=$get_it->getData();
$whatweneed=$got_it[0]['myMaxOrder'];
$this->order=(int)$whatweneed+1;
}
return true;
}
else
return false;
}
Den code bekommt der MAX aus 'um', aber ich wusste wirklich nicht wissen, wie man richtig mit dem YII-die getData () - Methode, so dass ich var_dumped und sah, dass das, was ich suchte, war da aber ich weiß noch nicht, wie Sie auf diesen Wert zugreifen neben dabei
$whatweneed=$got_it[0]['myMaxOrder'];
Könnten Sie mir sagen, wie es richtig zu machen?
InformationsquelleAutor ok_computer | 2011-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Ihre Datenbank angelegt, so dass die Bestellung
id
ist der Primärschlüssel (es sollte schon irgendwie), nur setzen Sie ihn auf "Auto Increment". Wenn Auto Increment gesetzt ist, auf den Primären Schlüssel (id
), dann, wenn Siesave()
ein Modell in Yii-ohneid
es wird automatisch speichern Sie es mit einerid
höher als der max. Sie brauchen nicht, etwas zu tun inbeforeSave()
an alle! Es ist kostenlos Funktionalität.Aber vielleicht bin ich Total Missverständnis Ihrer Frage. Vielleicht ist das keine auto-increment primary key-Spalte aus irgendeinem Grund. In diesem Fall, so etwas sollte funktionieren (vorausgesetzt, Ihr Modell Um, und Sie die Spalte ist auch, für einige Grund, "Bestellung"):
Glück!
Hmm das macht Sinn, das speichern einer Sortierreihenfolge. Froh, dass ich helfen konnte!
InformationsquelleAutor thaddeusmt