【问题标题】:Get column names in Laravel as ordered on the Table按照表格上的顺序获取 Laravel 中的列名
【发布时间】:2018-11-16 21:33:23
【问题描述】:

我正在使用以下方法来获取我的 Laravel (v5.6.24) 项目的数据库表的列名。我正在使用 mysql,它按预期工作正常。但是从本周开始,列名将按名称排序。以前它显示名称的顺序与实际表的顺序相同。

如何获取与表格顺序相同的列名?

/*
 * Get Table Column Names
 */
public function getTableColumns()
{
    return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
}

【问题讨论】:

  • 什么版本的 laravel?
  • Laravel v5.6.24
  • 你在使用 MySQL 吗?
  • 是的,我正在使用 MySQL

标签: laravel eloquent


【解决方案1】:

您必须按ordinal_position 对列进行排序:

public function getTableColumns()
{
    return $this->getConnection()->select(
        (new \Illuminate\Database\Schema\Grammars\MySqlGrammar)->compileColumnListing()
            .' order by ordinal_position',
        [$this->getConnection()->getDatabaseName(), $this->getTable()]
    );
}

【讨论】:

    【解决方案2】:

    可能对某人有所帮助:这是@Jonas Staudenmeir 答案的略微修改版本 - 但经过调整以可重用。只要给它输入表名,它就会输出一个表字段数组。

    private function getTableColumns($table_name)
    {
        return DB::select(
            (new \Illuminate\Database\Schema\Grammars\MySqlGrammar)->compileColumnListing()
                .' order by ordinal_position',
            [env('DB_DATABASE'), $table_name]
        );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      相关资源
      最近更新 更多