YII2中,MODEL取得表格欄位作為屬性的方式是使用“SHOW FULL COLUMNS FROM TABLE”,而不是直接寫在MODEL中。這樣不時讀資料庫信息,這種額外開銷感覺沒必要,畢竟表結果不常修改的。是基於什麼原因使用這種方式呢?
<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>
YII2中,MODEL取得表格欄位作為屬性的方式是使用“SHOW FULL COLUMNS FROM TABLE”,而不是直接寫在MODEL中。這樣不時讀資料庫信息,這種額外開銷感覺沒必要,畢竟表結果不常修改的。是基於什麼原因使用這種方式呢?
<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>