Php Laravel:如何获取表列名、类型和长度

Php Laravel:如何获取表列名、类型和长度,php,mysql,laravel,laravel-5,laravel-5.1,Php,Mysql,Laravel,Laravel 5,Laravel 5.1,在Laravel 5/5.1中是否有可用的方法,通过该方法我们可以获得表列名称、其类型和长度,即表元数据 例如: 你可以在这里查一下 从用户表中获取密码字段类型的示例代码 dd(DB::connection()->getDoctrineColumn('users', 'password')->getType()->getName()); 剩下的就交给你了。Goodluck:)我尝试了这一点,但不断收到PDO错误,因为并非所有驱动程序都受支持。因此,如果您使用MySQL或Mar

在Laravel 5/5.1中是否有可用的方法,通过该方法我们可以获得表列名称、其类型和长度,即表元数据

例如:

你可以在这里查一下

从用户表中获取密码字段类型的示例代码

dd(DB::connection()->getDoctrineColumn('users', 'password')->getType()->getName());

剩下的就交给你了。Goodluck:)

我尝试了这一点,但不断收到PDO错误,因为并非所有驱动程序都受支持。因此,如果您使用MySQL或MariaDB,这可能会有所帮助

$columns = DB::select( DB::raw('SHOW COLUMNS FROM `'.$table.'`'));

foreach($columns as $column) {
    $name = $column->Name;
    $type = $column->Type;
}

在项目开始时,我在较大的模型中添加了一个方便的静态函数,它以数组的形式返回所有表列数据,以便与Tinker或其他工具一起使用:

public static function describe()
{
    return DB::select(DB::raw("DESCRIBE " . (new self)->getTable(). ";"));
}

然后用App\Models\ModelName::descripe()调用tinker或其他方法调用此函数。

可能的重复:我没有得到我想要的结果,我得到了列名,但没有得到类型及其长度,然后看这里。。。(你做过任何研究吗?)是的,我正在做我的研究,做你的研究并不意味着问别人你能在5分钟内自己找到的东西。对这个问题的第一个评论链接到一个类似的问题,它被接受的答案提供了一个拉威尔特有的方法。请注意,您的答案与其他答案一样,都是特定于数据库驱动程序的。Laravel文档提供了此资源,提供了
getColumnListing(string$table)
public static function describe()
{
    return DB::select(DB::raw("DESCRIBE " . (new self)->getTable(). ";"));
}