Heim >Backend-Entwicklung >PHP-Tutorial >Warum verwendet MODEL in YII2 „SHOW FULL COLUMNS FROM TABLE', um Tabellenfelder als Attribute zu erhalten?
In YII2 erhält MODEL Tabellenfelder als Attribute, indem es „SHOW FULL COLUMNS FROM TABLE“ verwendet, anstatt sie direkt in MODEL zu schreiben. Dieser zusätzliche Aufwand, von Zeit zu Zeit Datenbankinformationen zu lesen, erscheint unnötig, schließlich werden die Tabellenergebnisse nicht häufig geändert. Was ist der Grund für die Verwendung dieser Methode?
<code> protected function loadTableSchema($name) { $table = new TableSchema; $this->resolveTableNames($table, $name); if ($this->findColumns($table)) { $this->findConstraints($table); return $table; } else { return null; } }</code>
<code> protected function findColumns($table) { $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteTableName($table->fullName); try { $columns = $this->db->createCommand($sql)->queryAll(); } ......... }</code>
In YII2 erhält MODEL Tabellenfelder als Attribute, indem es „SHOW FULL COLUMNS FROM TABLE“ verwendet, anstatt sie direkt in MODEL zu schreiben. Dieser zusätzliche Aufwand, von Zeit zu Zeit Datenbankinformationen zu lesen, erscheint unnötig, schließlich werden die Tabellenergebnisse nicht häufig geändert. Was ist der Grund für die Verwendung dieser Methode?
<code> protected function loadTableSchema($name) { $table = new TableSchema; $this->resolveTableNames($table, $name); if ($this->findColumns($table)) { $this->findConstraints($table); return $table; } else { return null; } }</code>
<code> protected function findColumns($table) { $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteTableName($table->fullName); try { $columns = $this->db->createCommand($sql)->queryAll(); } ......... }</code>