对于我的包,我正在尝试在users
数据库表中创建多个列。
我的表名变量定义如下:
private function fields()
{
return $this->fields = [
'id' => [
'type' => 'increments',
],
'name' => [
'type' => 'string',
'length' => 250,
],
'email' => [
'type' => 'string',
'length' => 250,
'extra' => 'unique'
],
'password' => [
'type' => 'string',
'length' => 100,
],
'access_token' => [
'type' => 'string',
'length' => 255,
],
'remember_token' => [
'type' => 'string',
'length' => 100,
],
];
}
我试图通过这样的foreach循环遍历这个:
Schema::create('users', function($table) {
foreach ($this->fields as $field => $value) {
if(!Schema::hasColumn('users', $field)) {
var_dump(gettype($value['type']));
$table->$value['type']($field);
}
}
});
当我运行php artisan migrate
时,收到错误:Array to string conversion
$value['type']
部分就是问题所在。所以我知道这个问题,但无法弄清楚如何解决这个问题。
答案 0 :(得分:0)
首先需要将其保存为如下变量:
Schema::create('users', function($table) {
foreach ($this->fields as $field => $value) {
if(!Schema::hasColumn('users', $field)) {
$type = $value['type'];
$table->$type($field);
}
}
});