数组到字符串转换:用户迁移文件

时间:2016-05-14 15:39:35

标签: php arrays laravel laravel-5

对于我的包,我正在尝试在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']部分就是问题所在。所以我知道这个问题,但无法弄清楚如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

首先需要将其保存为如下变量:

Schema::create('users', function($table) {
    foreach ($this->fields as $field => $value) {
        if(!Schema::hasColumn('users', $field)) {
            $type = $value['type'];
            $table->$type($field);
        }
    }
});