


Detaillierte Erl?uterung des Hinzufügens, L?schens, ?nderns und Abfragens von Yii2.0-Datenbankoperationen
Nov 01, 2019 pm 04:51 PM1. Einfache Abfrage:
one(): 根據(jù)查詢結(jié)果返回查詢的第一條記錄。 all(): 根據(jù)查詢結(jié)果返回所有記錄。 count(): 返回記錄的數(shù)量。 sum(): 返回指定列的總數(shù)。 average(): 返回指定列的平均值。 min(): 返回指定列的最小值。 max(): 返回指定列的最大值。 scalar(): 返回查詢結(jié)果的第一行中的第一列的值。 column(): 返回查詢結(jié)果中的第一列的值。 exists(): 返回一個值,該值指示查詢結(jié)果是否有數(shù)據(jù)。 where(): 添加查詢條件 with(): 該查詢應(yīng)執(zhí)行的關(guān)系列表。 indexBy(): 根據(jù)索引的列的名稱查詢結(jié)果。 asArray(): 以數(shù)組的形式返回每條記錄。
Anwendungsbeispiel:
Customer::find()->one(); 此方法返回一條數(shù)據(jù); Customer::find()->all(); 此方法返回所有數(shù)據(jù); Customer::find()->count(); 此方法返回記錄的數(shù)量; Customer::find()->average(); 此方法返回指定列的平均值; Customer::find()->min(); 此方法返回指定列的最小值 ; Customer::find()->max(); 此方法返回指定列的最大值 ; Customer::find()->scalar(); 此方法返回值的第一行第一列的查詢結(jié)果; Customer::find()->column(); 此方法返回查詢結(jié)果中的第一列的值; Customer::find()->exists(); 此方法返回一個值指示是否包含查詢結(jié)果的數(shù)據(jù)行; Customer::find()->asArray()->one(); 以數(shù)組形式返回一條數(shù)據(jù); Customer::find()->asArray()->all(); 以數(shù)組形式返回所有數(shù)據(jù); Customer::find()->where($condition)->asArray()->one(); 根據(jù)條件以數(shù)組形式返回一條數(shù)據(jù); Customer::find()->where($condition)->asArray()->all(); 根據(jù)條件以數(shù)組形式返回所有數(shù)據(jù); Customer::find()->where($condition)->asArray()->orderBy('id DESC')->all(); 根據(jù)條件以數(shù)組形式返回所有數(shù)據(jù),并根據(jù)ID倒序;
2 >
ActiveRecord::hasOne():返回對應(yīng)關(guān)系的單條記錄 ActiveRecord::hasMany():返回對應(yīng)關(guān)系的多條記錄Anwendungsbeispiel:
//客戶表Model:CustomerModel //訂單表Model:OrdersModel //國家表Model:CountrysModel //首先要建立表與表之間的關(guān)系 //在CustomerModel中添加與訂單的關(guān)系 Class CustomerModel extends yiidbActiveRecord { ... public function getOrders() { //客戶和訂單是一對多的關(guān)系所以用hasMany //此處OrdersModel在CustomerModel頂部別忘了加對應(yīng)的命名空間 //id對應(yīng)的是OrdersModel的id字段,order_id對應(yīng)CustomerModel的order_id字段 return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']); } public function getCountry() { //客戶和國家是一對一的關(guān)系所以用hasOne return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']); } .... } // 查詢客戶與他們的訂單和國家 CustomerModel::find()->with('orders', 'country')->all(); // 查詢客戶與他們的訂單和訂單的發(fā)貨地址 CustomerModel::find()->with('orders.address')->all(); // 查詢客戶與他們的國家和狀態(tài)為1的訂單 CustomerModel::find()->with([ 'orders' => function ($query) { $query->andWhere('status = 1'); }, 'country', ])->all();Hinweis: Bestellungen in mit entsprechen getOrders
FAQ: hinzugefügt - bei Abfrage >select ();Wie folgt müssen Sie order_id hinzufügen, also das zugeh?rige Feld (zum Beispiel: order_id), es muss sich beispielsweise in der Auswahl befinden, andernfalls wird ein Fehler gemeldet: undefinierter Index order_id// 查詢客戶與他們的訂單和國家 CustomerModel::find()->select('order_id')->with('orders', 'country')->all(); findOne()和findAll(): // 查詢key值為10的客戶 $customer = Customer::findOne(10); $customer = Customer::find()->where(['id' => 10])->one(); // 查詢年齡為30,狀態(tài)值為1的客戶 $customer = Customer::findOne(['age' => 30, 'status' => 1]); $customer = Customer::find()->where(['age' => 30, 'status' => 1])->one(); // 查詢key值為10的所有客戶 $customers = Customer::findAll(10); $customers = Customer::find()->where(['id' => 10])->all(); // 查詢key值為10,11,12的客戶 $customers = Customer::findAll([10, 11, 12]); $customers = Customer::find()->where(['id' => [10, 11, 12]])->all(); // 查詢年齡為30,狀態(tài)值為1的所有客戶 $customers = Customer::findAll(['age' => 30, 'status' => 1]); $customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();
where( )Bedingung:
$customers = Customer::find()->where($cond)->all(); $cond寫法舉例: // SQL: (type = 1) AND (status = 2). $cond = ['type' => 1, 'status' => 2] // SQL:(id IN (1, 2, 3)) AND (status = 2) $cond = ['id' => [1, 2, 3], 'status' => 2] //SQL:status IS NULL $cond = ['status' => null]
[[und]]: Kombinieren Sie verschiedene Bedingungen miteinander, Anwendungsbeispiel:
//SQL:`id=1 AND id=2` $cond = ['and', 'id=1', 'id=2'] //SQL:`type=1 AND (id=1 OR id=2)` $cond = ['and', 'type=1', ['or', 'id=1', 'id=2']]
[[or] ]:
//SQL:`(type IN (7, 8, 9) OR (id IN (1, 2, 3)))` $cond = ['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]
[[not]]:
//SQL:`NOT (attribute IS NULL)` $cond = ['not', ['attribute' => null]]
[[between]]: nicht zwischen hat die gleiche Verwendung wie
//SQL:`id BETWEEN 1 AND 10` $cond = ['between', 'id', 1, 10]
[[in]]: nicht in Verwendung wie
//SQL:`id IN (1, 2, 3)` $cond = ['in', 'id', [1, 2, 3]] //IN條件也適用于多字段 $cond = ['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']]] //也適用于內(nèi)嵌sql語句 $cond = ['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]
[[like]]:
//SQL:`name LIKE '%tester%'` $cond = ['like', 'name', 'tester'] //SQL:`name LIKE '%test%' AND name LIKE '%sample%'` $cond = ['like', 'name', ['test', 'sample']] //SQL:`name LIKE '%tester'` $cond = ['like', 'name', '%tester', false]
[ [existiert]]: nicht vorhanden Die Verwendung ?hnelt der von
//SQL:EXISTS (SELECT "id" FROM "users" WHERE "active"=1) $cond = ['exists', (new Query())->select('id')->from('users')->where(['active' => 1])] 此外,您可以指定任意運算符如下 //SQL:`id >= 10` $cond = ['>=', 'id', 10] //SQL:`id != 10` $cond = ['!=', 'id', 10]
H?ufige Abfragen:
// WHERE admin_id >= 10 LIMIT 0,10 User::find()->select('*')->where(['>=', 'admin_id', 10])->offset(0)->limit(10)->all() // SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post` $subQuery = (new Query())->select('COUNT(*)')->from('user'); $query = (new Query())->select(['id', 'count' => $subQuery])->from('post'); // SELECT DISTINCT `user_id` ... User::find()->select('user_id')->distinct();
Update:
//update(); //runValidation boolen 是否通過validate()校驗字段 默認為true //attributeNames array 需要更新的字段 $model->update($runValidation , $attributeNames); //updateAll(); //update customer set status = 1 where status = 2 Customer::updateAll(['status' => 1], 'status = 2'); //update customer set status = 1 where status = 2 and uid = 1; Customer::updateAll(['status' => 1], ['status'=> '2','uid'=>'1']);
L?schen:
$model = Customer::findOne($id); $model->delete(); $model->deleteAll(['id'=>1]);
Batch-Einfügung:
Yii::$app->db->createCommand()->batchInsert(UserModel::tableName(), ['user_id','username'], [ ['1','test1'], ['2','test2'], ['3','test3'], ])->execute();
Ausführungs-SQL anzeigen
//UserModel $query = UserModel::find()->where(['status'=>1]); echo $query->createCommand()->getRawSql();Empfohlenes Tutorial:
Das obige ist der detaillierte Inhalt vonDetaillierte Erl?uterung des Hinzufügens, L?schens, ?nderns und Abfragens von Yii2.0-Datenbankoperationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Schlüssel zur Installation von MySQL 8.0 liegt darin, die Schritte zu befolgen und auf h?ufige Probleme zu achten. Es wird empfohlen, das MSI -Installationspaket unter Windows zu verwenden. Die Schritte beinhalten das Herunterladen des Installationspakets, das Ausführen des Installationsprogramms, die Auswahl des Installationstyps, das Festlegen des Stammkennworts, das Aktivieren des Dienstes für das Dienst und die Beachtung von Portkonflikten oder die manuelle Konfiguration der ZIP -Version. Linux (wie Ubuntu) wird über APT installiert. In den Schritten wird die Quelle aktualisiert, den Server installiert, Sicherheitsskripte ausgeführt, den Dienststatus geprüft und die Stammauthentifizierungsmethode ge?ndert. Unabh?ngig von der Plattform sollten Sie das Standardkennwort ?ndern, gew?hnliche Benutzer erstellen, Firewalls einrichten, Konfigurationsdateien anpassen, um Zeichens?tze und andere Parameter zu optimieren, um die Sicherheit und den normalen Gebrauch zu gew?hrleisten.

Die M?glichkeit, alle Datenbanken in MongoDB anzuzeigen, besteht darin, den Befehl "showdbs" einzugeben. 1. Dieser Befehl zeigt nur nicht leere Datenbanken an. 2. Sie k?nnen die Datenbank über den Befehl "Verwendung" wechseln und Daten einfügen, damit sie angezeigt werden. 3. Achten Sie auf interne Datenbanken wie "Lokal" und "Konfiguration". 4. Bei Verwendung des Treibers müssen Sie die Methode "ListDatabases ()" verwenden, um detaillierte Informationen zu erhalten. 5. Der Befehl "db.stats ()" kann detaillierte Datenbankstatistiken anzeigen.

Der Hauptunterschied zwischen ?lteren YII -Entwicklern und Junior YII -Entwicklern ist die Erfahrung, die Tiefe der F?higkeiten und die Denkweise. 1. Senior -Entwickler achten auf die Leistungsoptimierung und den Rekonstruktion von Code und verwenden den Cache -Mechanismus von YII, um die Anwendungsleistung zu verbessern. 2. Sie verstehen die zugrunde liegenden Prinzipien von YII zutiefst, nehmen am architektonischen Design und am technischen Entscheidungsfindung teil und verwenden modulares Design, um flexible Anwendungen zu erstellen. 3. Senior-Entwickler achten auf die Gesamtprojektplanung und die langfristige Entwicklung und spielen die Rolle des Mentors. Junior -Entwickler müssen sich durch Lernen und üben nach und nach verbessern und schlie?lich zu hochrangigen Entwicklern wachsen.

Zu den allgemeinen SQL -Aussagen geh?ren: 1. CreateTable erstellt Tabellen wie CreatTable -Mitarbeiter (IDINTPRIMARYKEY, NAMEVARCHAR (100), Gehaltsezimal (10,2)); 2. createIndex erstellt Indexe, z. 3.. InsertInto fügt Daten ein, z. B. InsertInto -Mitarbeiter (ID, Name, Gehalt) Werte (1, 'Johndoe', 75000,00); 4. W?hlen Sie überprüfen

UsedisinSteadofatitionaldatabaseWenyourApplicationRequiresspeedandreal-Timedataprocessing, Suchasforcaching, SessionManagement, Orreal-Timalytics.Rectisexcelsin: 1) Caching, ReducingloadonPimarydatabase;

Um neue Datens?tze in der Datenbank mit eloquent zu erstellen, gibt es vier Hauptmethoden: 1. Verwenden Sie die Methode erstellen, um Datens?tze schnell zu erstellen, indem Sie das Attribut -Array wie user :: create (['name' => 'Johndoe', 'E -Mail' => 'John@example.com']) schnell erstellen; 2. Verwenden Sie die Speichernmethode, um das Modell manuell zu instanziieren und Werte zuzuweisen, um einzeln zu speichern. Dies ist für Szenarien geeignet, in denen eine bedingte Zuordnung oder zus?tzliche Logik erforderlich ist. 3.. Verwenden Sie FirstOrCreate, um Datens?tze basierend auf Suchbedingungen zu finden oder zu erstellen, um doppelte Daten zu vermeiden. V.

YiiisbetterForHigh-PerformanceProjectswithasterLearningCurve, whilelaravelsRapiddevelopmentwithalargeecosystem.1)

Um das YII -Framework zu installieren, müssen Sie PHP und Komponist nach verschiedenen Betriebssystemen konfigurieren. Die spezifischen Schritte sind wie folgt: 1. Sie müssen PHP manuell herunterladen und Umgebungsvariablen unter Windows konfigurieren, dann den Komponisten installieren, Befehle verwenden, um ein Projekt zu erstellen und einen integrierten Server auszuführen. 2. Es wird empfohlen, Homebrew zu verwenden, um PHP und Komponist zu installieren, dann ein Projekt zu erstellen und einen Entwicklungsserver zu starten. 3.. Linux (wie Ubuntu) Installieren Sie PHP, Erweiterungen und Komponist über APT, erstellen Sie dann ein Projekt und stellen Sie eine formale Umgebung mit Apache oder Nginx bereit. Die Hauptunterschiede zwischen verschiedenen Systemen liegen in der Umgebungsstufe. Sobald PHP und Komponist bereit sind, sind die nachfolgenden Prozesse konsistent. Notiz
