我想建立一个通用的表单创建器,它基本上采用某个雄辩的模型,并自动建立一个表单与它的所有字段。
因此,我需要知道模型的所有字段及其(数据)类型。所以我有两个问题:
谢谢你的帮忙!
最好的,西蒙
发布于 2017-12-29 09:06:52
我是这样做的:
$model = new ExampleModel();
$model->getConnection()->getSchemaBuilder()->getColumnListing($model->getTable());
对于您的model add方法:
public function getColumnsNames() {
return (array) $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
}
发布于 2016-01-19 15:27:36
$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
}
发布于 2016-05-30 23:52:57
我发现的各种解决方案的问题是,它们都依赖于Doctrine,而Doctrine不再是Laravel的一部分。
这就是为什么会出现Doctrine\DBAL错误。
因此,我尝试将它作为依赖项包含在内,但仍然给出了错误。
当我查看源代码,试图解决这个错误时,我注意到还有另一个方法: getPdo()。
所以,在绝望中,我使用了它。
$pdo = \DB::getPdo();
$select = $pdo->query('SELECT '.$field.' FROM '.$table. ' WHERE ID = "'.$id.'"');
$meta = $select->getColumnMeta(0);
dd($meta);
在本例中,返回如下:
array:7 [
"native_type" => "VAR_STRING"
"pdo_type" => 2
"flags" => array:1
"table" => "photologs"
"name" => "slug"
"len" => 60
"precision" => 0
]
现在,这很混乱,您必须运行另一个查询才能获得结果。
在我的实例中,我正在开发一个方法,该方法将为您提供有关特定字段的所有信息,因此我已经知道表和字段名。
我的解决方案绝不是完整的,但它确实有效,您应该能够对其进行调整以适应需要。
如果你找到了更好的方法,请告诉我!
https://stackoverflow.com/questions/34837594
复制相似问题