So erstellen Sie ein Yii2-Modell ohne Datenbank

8

Ich möchte ein yii2-Modell ohne eine Datenbank erstellen. Stattdessen werden die Daten dynamisch generiert und nicht gespeichert, sondern nur dem Benutzer als JSON angezeigt. Grundsätzlich möchte ich nur ein einfaches, einfaches Beispiel für ein nicht datenbankbasiertes Modell erhalten, aber ich kann keine Dokumentation darüber finden.

Wie würde ich also ein Modell ohne Datenbank schreiben? Ich habe \yii\base\Model erweitert, bekomme aber folgende Fehlermeldung:

%Vor%

Um find() zu implementieren, muss ich ein Datenbankabfrageobjekt zurückgeben.

Mein Modell ist komplett leer, ich suche nur ein einfaches Beispiel, um den Prinzipal zu verstehen.

%Vor%     
Mr Goobri 24.02.2015, 15:50
quelle

4 Antworten

10

Dies ist ein Model von einem meiner Projekte. Diese Model ist nicht mit einer Datenbank verbunden.

%Vor%

Verwenden Sie Model wie jedes andere. z.B. view.php :

%Vor%

    
Abhimanyu Saharan 25.02.2015, 06:28
quelle
6

Der Grund für die Verwendung eines Modells besteht darin, eine Art von Logik für Daten auszuführen, die Sie von irgendwoher erhalten. Ein Modell kann verwendet werden, um eine Datenvalidierung durchzuführen, Eigenschaften des Modells und ihrer Beschriftungen zurückzugeben und eine massive Zuweisung zu ermöglichen. Wenn Sie diese Funktionen für Ihr Datenmodell nicht benötigen, verwenden Sie kein Modell!

Wenn Sie keine Datenüberprüfung benötigen (d. h. Sie ändern keine Daten über Formulare oder andere externe Quellen) und Sie keinen Zugriff auf Verhalten oder Ereignisse benötigen, müssen Sie wahrscheinlich nur yii \ base \ Object verwenden. Dies gibt Ihnen Zugriff auf Getter und Setter für Eigenschaften des Objekts, das alles zu sein scheint, was Sie brauchen.

So sieht Ihre Klasse so aus. Ich habe eingeschlossen, Daten von einem anderen Modell zu erhalten, falls das ist, was Sie tun möchten;

%Vor%

Sie würden es dann einfach so benutzen;

%Vor%

Die Funktion, die Sie zu verwenden versucht haben, find (), ist nur für eine Datenbank relevant und steht daher Ihrer Klasse nicht zur Verfügung, wenn Sie yii \ base \ Model, yii \ base \ Component oder yii \ erweitert haben. base \ Object, es sei denn, Sie möchten eine solche Funktion selbst definieren.

    
Joe Miller 25.02.2015 05:57
quelle
3

Eine einfache Möglichkeit, Modelle ohne Datenbank-Backend zu erstellen, ist die Verwendung eines DynamicModel :

  

DynamicModel ist eine Modellklasse, die hauptsächlich zur Unterstützung der Ad-hoc-Datenvalidierung verwendet wird.

Schreiben Sie einfach in Ihren Controller:

%Vor%

und übergeben Sie dann $ model an Ihre Ansicht.

Ein vollständiges Beispiel finden Sie in Ссылка .

Dies ist perfekt für Benutzereingaben zum Aufrufen von APIs, zum Erstellen von Formularen im laufenden Betrieb usw.

    
WeSee 22.02.2016 06:08
quelle
1

Wie bereits in den Kommentaren und anderen Antworten erwähnt, muss Ihr Modell \ yii erweitern \ db \ BaseActiveRecord . Das heißt, Sie können Ihre JSON als eine Nosql-Datenbank wie MongoDb oder in einem Schlüssel-Wert-Cache wie Redis statt. Beide haben Yii-Implementierungen: \ yii \ mongodb \ ActiveRecord und \ yii \ redis \ ActiveRecord

    
topher 25.02.2015 08:05
quelle

Tags und Links