Hao*_*Luo 18 php database laravel
有没有办法获取数据库表字段的数据类型?几乎像迁移的倒数.
例如,如果用户表列的迁移看起来像
...
$table->integer('age')
...
integer如果我指定表user和列,是否会返回一个函数age?
我对特定的数据库实现不感兴趣,(mysql_field_type()).像Laravel的迁移一样,它需要与数据库无关.
Hao*_*Luo 28
在Laravel挖掘之后,这就是我得到的.
DB::connection()->getDoctrineColumn('users', 'age')->getType()->getName()
Sᴀᴍ*_*ᴇᴌᴀ 16
用 Illuminate\Database\Schema\Builder::getColumnType()
DB::getSchemaBuilder()->getColumnType($tableName, $colName)
例如
$ageType = DB::getSchemaBuilder()->getColumnType('user', 'age')
如果您还没有运行此命令,则可能需要:
composer require doctrine/dbal
获取表字段的所有详细信息
DB::select('describe table_name');
例子:-
DB::select('describe users');
响应将是这样的
 Array
(
    [0] => stdClass Object
        (
            [Field] => id
            [Type] => int(11)
            [Null] => NO
            [Key] => PRI
            [Default] => 
            [Extra] => auto_increment
        )
    [1] => stdClass Object
        (
            [Field] => user_group_id
            [Type] => int(11) unsigned
            [Null] => YES
            [Key] => MUL
            [Default] => 
            [Extra] => 
        )
    [2] => stdClass Object
        (
            [Field] => username
            [Type] => varchar(100)
            [Null] => YES
            [Key] => MUL
            [Default] => 
            [Extra] => 
        )
 )
在搜索完代码后,我发现你可以.跳到下面的"解决方案"来查看它.
Eloquent和Database类使用PDO,它不会绑定特定的基于SQL的数据库.
因此,您应该能够做到这样的事情:
$pdo = DB::getPdo();
请注意,连接对象可以返回PDO的实例.
有一些方法,如getColumnMeta,但并不是所有驱动程序都完全支持它们.
然而,一些谷歌搜索似乎指出,最好的方法可能是使用ANSI标准INFORMATION_SCHEMA - 使用SQL查询来获取该信息.
最后,Laravel将Doctrine库作为依赖项包含在内,它确实包含一些模式功能.
旁注:事实上,Doctrine因其基于模式的功能而被包含在内 - Laravel不使用Doctrine的ORM
在这里查看我们检索PDO实例的同一个连接对象,我们可以获得doctrine连接和schema Manager.你应该可以打电话:
$schema = DB:: getDoctrineSchemaManager();
然后,您可以使用架构管理器(此处的文档)来获取您所追求的内容.
小智 5
将此表达式与拨号函数一起使用可显示所有表字段的数组详细信息:
dd(DB::select(DB::raw('SHOW FIELDS FROM tablename')));
在Laravel 5+(包括 6 和 7)中,您可以通过以下方式获取 db 表列元数据(即类型、默认值等):
use Illuminate\Support\Facades\Schema;
对于所有列:
 $columns = Schema::getConnection()->getDoctrineSchemaManager()->listTableColumns('table_name');
 $column = Schema::getConnection()->getDoctrineColumn('table_name'', 'column_name'); //For a single column:
getDoctrineSchemaManager方法返回一个\Doctrine\DBAL\Schema\Column类实例数组。
getDoctrineColumn方法返回\Doctrine\DBAL\Schema\Column类的实例。
\Doctrine\DBAL\Schema\Column类中的几个方法:
$column->getName();
$column->getNotnull(); // returns true/false
$column->getDefault(); 
$column->getType(); 
$column->getLength();
| 归档时间: | 
 | 
| 查看次数: | 17766 次 | 
| 最近记录: |