In YII2, the method by which the MODEL obtains table fields as attributes is to use "SHOWFULLCOLUMNSFROMTABLE" instead of writing them directly in the MODEL. In this way, it is unnecessary to read the database information from time to time. after all, the table results are not modified frequently. In YII2, how does MODEL obtain TABLE fields as attributes? instead of writing them directly in MODEL. In this way, it is unnecessary to read the database information from time to time. after all, the table results are not modified frequently. Why is this method used?
protected function loadTableSchema($name) { $table = new TableSchema; $this->resolveTableNames($table, $name); if ($this->findColumns($table)) { $this->findConstraints($table); return $table; } else { return null; } }
protected function findColumns($table) { $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteTableName($table->fullName); try { $columns = $this->db->createCommand($sql)->queryAll(); } ......... }
Reply content:
In YII2, the way for MODEL to get TABLE fields as attributes is to use "show full columns from table" instead of writing them directly in the MODEL. In this way, it is unnecessary to read the database information from time to time. after all, the table results are not modified frequently. Why is this method used?
protected function loadTableSchema($name) { $table = new TableSchema; $this->resolveTableNames($table, $name); if ($this->findColumns($table)) { $this->findConstraints($table); return $table; } else { return null; } }
protected function findColumns($table) { $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteTableName($table->fullName); try { $columns = $this->db->createCommand($sql)->queryAll(); } ......... }