2017-02-27 2 views
1

Wie überprüft man, ob Daten in DB vorhanden sind und in das ActiveRecord-Modell geladen wurden. In Kohana gibt es beispielsweise die Funktion loaded, um zu überprüfen, ob ORM erfolgreich einen Datensatz geladen hat.Yii2 überprüfen, ob ActiveRecord erfolgreich einen Datensatz geladen hat

class Model_Image extends ORM { 
    public function url($width = NULL) 
    { 
     if(! $this->loaded()){ 
      return NULL; 
     } 
     ... 
    } 

Ich habe die Klasse namens Image es ist von ActiveRecord erweitert. Class Image hat URL-Funktion, innerhalb Funktion URL Ich sollte prüfen, ob eine Daten geladen wurde, oder es ist die neue?

Gibt es in Yii2 etwas Ähnliches, um zu überprüfen, ob ActiveRecord erfolgreich einen Datensatz geladen hat.

Antwort

1

Wenn Sie findOne() (einfach one()) im ActiveRecord-Modell verwenden, in dem die Bedingung nicht erfüllt ist, wird null zurückgegeben.

Wenn Sie findAll() (einfach all()) im ActiveRecord-Modell verwenden, in dem die Bedingung nicht erfüllt ist, wird ein leeres Array zurückgegeben.

Alles, was Sie überprüfen müssen, ist, ob der ActiveRecord nicht leer ist.

Beispiel:

$model = MyActiveRecordModel::findOne(1); 
if (empty($model)) { 
    // DB row not found 
} else { 
    // DB row found 
} 

Zusätzlich können Sie Boolesche Eigenschaft überprüfen isNewRecord des Modells:

if ($model->isNewRecord) { 
    // no previously db data loaded - 
    // new instance of model (new data not saved yet) 
} 
+0

Wie kann man überprüfen, ob die Active ist nicht leer innerhalb ActiveRecord-Modell, zum Beispiel habe ich in meine AR-Modellfunktion URL, die sup Posen um URL zu erzeugen. –

+0

Was meinst du? Das ist eine ganz andere Frage als die erste. – Bizley

+0

Beispiel zum Überprüfen, ob leer hinzugefügt wurde. – Bizley

0

Ist dies ein Element:

$model = User::findOne(1); 
if($model){ 
//all good 
}else{ 
//no data 
} 

Wenn mehrere Modell dann

$model = User::findAll(1); 

immer Array zurück, so dass, wenn Array keine Elemente haben dann foreach wird `t laufen Körper Zyklus .

0

Prüfung auf das Vorhandensein von Daten:

<?php $checkForExistenceOfData = Model::find()->exists(); 
    if($checkForExistenceOfData == true){ 
     $getModelData = Model::findAll(); 
    }else{ 
     echo 'No Data Exists'; 
    } 
?> 
Verwandte Themen