如何在Laravel 5.2中获取列类型?

时间:2016-08-21 14:30:54

标签: php laravel laravel-5 laravel-5.2

我在视图中获取此代码以获取特定表的列

$columns = \Schema::getColumnListing('posts')

所以我制作了一个foreach循环来获取所有列'名。但是现在我正在制作一个CRUD生成器,所以我需要列类型来知道我将为它制作哪种类型的字段。上面的代码只给了我一栏'名。我怎样才能获得列类型?

更新: 我搜索了包含getColumnListing方法的文件,然后找到了一个名为getColumnType($table, $column)的方法。它返回一个字符串。

我尝试使用它但是我收到了这个错误:

FatalErrorException in MySqlConnection.php line 64: Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

3 个答案:

答案 0 :(得分:2)

我在项目中搜索了getColumnListing方法,我在一个名为Builder.php的文件中找到了它,在getColumnListing方法的确切上面,我找到了一个名为getColumnType($table, $column)的方法

我尝试使用这行代码使用getColumnType方法:

$type = \Schema::getColumnType('{{collection}}s', $col);

但是我收到了这个错误:FatalErrorException in MySqlConnection.php line 64: Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found这是因为错过了一个名为doctrine/dbal的软件包,不再包含laravel 5.2

所以我运行这个命令composer require doctrine/dbal,我不再有任何错误。

感谢@pari告诉我安装doctrin / dbal。

答案 1 :(得分:0)

你可以在你的foreach中使用getColumnType()方法。

这个包是必要的。

composer require doctrine/dbal

答案 2 :(得分:0)

试用此代码

            $tables = ['tablename'];
            foreach($tables as $table){
              $table_info_columns = DB::select( DB::raw('SHOW COLUMNS FROM '.$table));

              foreach($table_info_columns as $column){
                $col_name = $column->Field;
                $col_type = $column->Type;
                var_dump($col_name,$col_type);
              } 
            }