2017-11-15 1 views
0

aktualisieren Ich möchte meine table/model aktualisieren. Das Szenario ist, ich habe eine 'Status' Spalte, ich möchte SET diese Spalte auf einen Wert dann aktualisieren Sie das Modell auf der Grundlage der id. Ich möchte etwas wie update Aussage machen.Yii-2, wie man einen Datensatz auf der Basis von ID

Update 'table' SET status = 'status value' where id = 'myid'

Mein action controller aussehen wie

$model = $this->findModel($id); 
$ogp_id = $model->id; 
$status = $model->status; 

ich es habe gesucht, konnte aber keine Lösung

Jede Hilfe wäre sehr geschätzt

+0

ernsthaft gesucht Sie? "Yii2 Update Record" gibt Ihnen so viele gute Ergebnisse, sogar offizielle Dokumentation: [Yii2 Einfügen/Aktualisieren von Daten] (http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#inserting- update-data) – Yupik

Antwort

1

für retrive die $ id bezogenen Modell Sie FindOne ($ id) verwenden können, wenn ID der Primärschlüssel

$model =YourModel::findOne($id); 
$model->status = 'Active'; 
$model->save(); 

ist oder finden() -> Wo() -> ein() im allgemeinen Fall

$model =YourModel::find()-where(['id'=>$id])->one(); 
$model->status = 'Active'; 
$model->save(); 

wenn Ihr Validierungsregeln versagen können Sie versuchen, mit $model->save(false); wenn in diesem Fall e Zeile dünne mittlere aktualisiert, dass einige Ihrer Datenvalidierungsregeln nicht .. respektieren und Sie sollten für mich diese Werke für dieses

+0

Sie haben bereits eine andere Antwort als beantwortet geantwortet .. also was meinen Kommentar ????? – scaisEdge

1

Versuchen wie diese finden,

$model =Table::find($id); 
    $model->status = 'Active'; 
    $model->save(); 

verwenden auch Befehl erstellen können direkt wie folgt verwendet werden:

Yii::$app->db->createCommand("UPDATE table SET status=:status WHERE id=:id") 
->bindValue(':id', your_id) 
->execute(); 
+0

'$ model = $ this-> findModel ($ id);' sollte es nicht funktionieren? –

0

überprüfen

ich eine Funktion

hinzugefügt
protected function findModel($id) 
{ 
    if (($model = Ogpheader::findOne($id)) !== null) { 
     return $model; 
    } else { 
     throw new NotFoundHttpException('The requested page does not exist.'); 
    } 
} 

Dann greifen sie in der Steuerung

$model = $this->findModel($id); 
$ogp_id = $model->id; 

Dann, während mein Modell Speichern ich habe das getan folgende

if($m->save()) 
{ 
    $model->status = Ogpheader::$status_titles[1]; 
    $model->update(); 
    //my other code 
} 

Das hat meine Tabelle aktualisiert und die Spalte als

erforderlich
+0

Kennen Sie den Grund für die Abstimmung über seine Antwort? obwohl ich nicht, aber meine erste Schätzung ist '$ this-> findModel()' als dies ist eine benutzerdefinierte Funktion in Ihrem Controller und es gibt keine Funktion in Ihrem Code zur Verfügung gestellt, so würde dies zu einem Fehler führen, wenn jemand Ihre kopieren und einfügen Code und versuchen zu laufen, sollten Sie die Antwort korrigieren, oder Sie erhalten mehr downvotes zu dieser Antwort –

+0

Aktualisiert meine Antwort ... –

Verwandte Themen