Heim >Backend-Entwicklung >PHP-Tutorial >Warum verwendet MODEL in YII2 „SHOW FULL COLUMNS FROM TABLE', um Tabellenfelder als Attribute zu erhalten?

Warum verwendet MODEL in YII2 „SHOW FULL COLUMNS FROM TABLE', um Tabellenfelder als Attribute zu erhalten?

WBOY
WBOYOriginal
2016-08-18 09:15:332442Durchsuche

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>

Antwortinhalt:

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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn