【问题标题】:Laravel: How to get table column name, its type and lengthLaravel:如何获取表列名、类型和长度
【发布时间】:2016-01-22 16:49:42
【问题描述】:

在 Laravel 5/5.1 中有什么方法可以获取 Table 的列名、类型和长度,Means table meta data?

例如:

Name    |    Type    |    Length

ID      |    Integer |    11
Name    |    varchar |    100
Email   |    varchar |    100
Password|    md5     |    82
Address |    tinytext|    
DOB     |    date    |    
Status  |    enum(0,1)|

【问题讨论】:

标签: php mysql laravel laravel-5 laravel-5.1


【解决方案1】:

我在项目开始时添加到我的大型模型中的一件事是一个方便的静态函数,它将所有表列数据作为数组返回,因此它可以与 Tinker 或其他方式一起使用:

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

然后在 tinker 中调用它或使用 App\Models\ModelName::describe() 调用它

【讨论】:

  • 对问题的第一条评论链接到一个类似的问题,其接受的答案提供了一个 Laravel 特定的方法。请注意,您的答案与其他答案之一一样是特定于数据库驱动程序的。 Laravel 文档有这个资源 laravel.com/api/5.8/Illuminate/Database/Schema/… 提供 getColumnListing(string $table)
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    你可以在这里查看。 https://laravel.com/api/5.1/Illuminate/Database/Connection.html

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

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

    剩下的交给你。祝你好运:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-01
      • 2014-02-15
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2022-11-14
      • 2013-12-07
      相关资源
      最近更新 更多