suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - YII2 MODEL获取表字段方式

YII2中,MODEL获取表字段作为属性的方式是使用“SHOW FULL COLUMNS FROM TABLE”,而不是直接写在MODEL中。这样不时读数据库信息,这种额外开销感觉没必要,毕竟表结果不经常修改的。是基于什么原因使用这种方式呢?

1

2

3

4

5

6

7

8

9

10

11

12

13

<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>

1

2

3

4

5

6

7

8

<code>    protected function findColumns($table)

    {

        $sql = 'SHOW FULL COLUMNS FROM ' . $this->quoteTableName($table->fullName);

        try {

            $columns = $this->db->createCommand($sql)->queryAll();

        }

        .........

    }</code>

怪我咯怪我咯2839 Tage vor696

Antworte allen(2)Ich werde antworten

  • 伊谢尔伦

    伊谢尔伦2017-04-11 10:26:49

    你可以在生产环境中使用字段缓存,配置 db.php

    1

    <code>'enableSchemaCache' => true,</code>

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 10:26:49

    1

    2

    3

    4

    5

    <code>    'enableSchemaCache' => true,

        // Name of the cache component used to store schema information

        'schemaCache' => 'cache',

        // Duration of schema cache.

        'schemaCacheDuration' => 86400, // 24H it is in seconds</code>

    Antwort
    0
  • StornierenAntwort