我正在尝试根据 Laravel 框架中的用户输入创建新的 mysql 表。
用户提交一个在控制器中处理的表单,保存表单数据,然后根据用户的输入创建一个新表(以便稍后接收数据)。
在 Laravel 中,可以使用 schema::create() 创建表
Schema::create('newtablename', function($table){
$table->increments('id')->unique(); //primary key
$table->string('columnname');
etc.
});
本质上我想这样做,除了基于用户输入的表名和列名:
用户输入是一个多维数组,如下所示:
$newtableschema = array(
'tablename' => 'tablename',
'colnames' => array('One', 'Two', 'Three', 'Four');
);
Schema::create($newtableschema['tablename'], function($table){
$table->increments('id')->unique(); //primary key
foreach($newtableschema['colnames'] as $col){
$table->text($col);
}
etc.
});
我得到的错误是变量未定义。我不知道如何将用户的输入提供给 schema::create 方法。
我在文档中找不到任何以这种方式创建表的方法,或者在我过去 3 个小时的谷歌搜索中找不到任何类似的方法。雄辩的语法有时让我感到困惑,所以也许我遗漏了一些明显的东西。
有任何想法吗?或者是否有替代的纯 php/sql 来完成此任务?
非常感谢
编辑:我很抱歉,我之前在示例代码中犯了一个拼写错误。我的问题是我不知道如何传递我想要的变量 schema::create()