首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为泛型表单获取Laravel 5.2模型字段名称和类型

如何为泛型表单获取Laravel 5.2模型字段名称和类型
EN

Stack Overflow用户
提问于 2016-01-17 19:04:05
回答 3查看 2.8K关注 0票数 0

我想建立一个通用的表单创建器,它基本上采用某个雄辩的模型,并自动建立一个表单与它的所有字段。

因此,我需要知道模型的所有字段及其(数据)类型。所以我有两个问题:

  1. 有没有办法做到这一点?总体来说,这是一个聪明的想法吗?
  2. 有没有什么简单易用的软件包,可以做同样的事情,并与laravel 5.2一起工作。(我尝试过FrozenNode's ,但dos只适用于LARLAVEL4,我不需要它的所有功能)

谢谢你的帮忙!

最好的,西蒙

EN

回答 3

Stack Overflow用户

发布于 2017-12-29 09:06:52

我是这样做的:

代码语言:javascript
复制
$model = new ExampleModel();
$model->getConnection()->getSchemaBuilder()->getColumnListing($model->getTable());

对于您的model add方法:

代码语言:javascript
复制
public function getColumnsNames() {
    return (array) $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
}
票数 3
EN

Stack Overflow用户

发布于 2016-01-19 15:27:36

代码语言:javascript
复制
$schema = \DB::getDoctrineSchemaManager();
$columns = $schema->listTableColumns('table_name'); //get table columns
foreach ($table->getColumns() as $column) { //run loop
   $column->getName(). - .$column->getType()->getName(); //here you can define your inputes
}
票数 2
EN

Stack Overflow用户

发布于 2016-05-30 23:52:57

我发现的各种解决方案的问题是,它们都依赖于Doctrine,而Doctrine不再是Laravel的一部分。

这就是为什么会出现Doctrine\DBAL错误。

因此,我尝试将它作为依赖项包含在内,但仍然给出了错误。

当我查看源代码,试图解决这个错误时,我注意到还有另一个方法: getPdo()。

所以,在绝望中,我使用了它。

代码语言:javascript
复制
$pdo = \DB::getPdo();
$select = $pdo->query('SELECT '.$field.' FROM '.$table. ' WHERE ID = "'.$id.'"');
$meta = $select->getColumnMeta(0);
dd($meta);

在本例中,返回如下:

代码语言:javascript
复制
array:7 [
"native_type" => "VAR_STRING"
"pdo_type" => 2
"flags" => array:1
"table" => "photologs"
"name" => "slug"
"len" => 60
"precision" => 0
]

现在,这很混乱,您必须运行另一个查询才能获得结果。

在我的实例中,我正在开发一个方法,该方法将为您提供有关特定字段的所有信息,因此我已经知道表和字段名。

我的解决方案绝不是完整的,但它确实有效,您应该能够对其进行调整以适应需要。

如果你找到了更好的方法,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34837594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档