mysql - laravel - 使用枚举的替代方案,因为不支持重命名列

标签 mysql laravel laravel-5

Laravel documentation

Note: Renaming columns in a table with a enum column is not currently supported.

什么是使用 ENUM 的最佳实践替代方案。例如,我有一个包含 type ENUM 列的 users 表。我将来可能需要修改该表,但由于 ENUM 列的存在而无法修改。

最佳答案

我通常做的是:制作一个types表。

-----------------------
| id | type           |
-----------------------
| 1  | admin          |
-----------------------
| 2  | moderator      |
-----------------------

在您的users 表中创建一个字段type_id。并在 Laravel 中创建你的关系:

class User extends Model
{

    public function type()
    {
        return $this->hasOne('Type');
    }
}

现在您可以:

$users = Users::where('type', '=', 1)->get();

或者:

$users = User::with(['type' => function ($query) {
    $query->where('type', '=', 'admin');
}])->get();

而且您还可以反转关系,这样您就可以通过type 查询并加载所有users,例如:

$all = Type::with('users')->where('type', '=', 'admin')->get();

关于mysql - laravel - 使用枚举的替代方案,因为不支持重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813138/

相关文章:

laravel 中的 Javascript 函数未定义

MySQL 更新表中的当前记录

PHP Laravel Gallery 将数组拆分为 3 列

php - 如何从存储过程中获取特定的 count(*) 列作为字符串或整数

php - 在 Laravel 5.2 中按 id 显示图像文件

php - 如何覆盖/添加到 Laravel 中的密码代理?

php - Laravel 数组键存在于 get 方法中

MySQL 对大数据集的低效查询

mysql - 为什么 MySQL AI id 会这样?

mysql - PL/SQl - 找出年薪的总增长