laravel - 不支持使用enum,因为重命名列

时间:2015-08-04 15:19:18

标签: mysql laravel laravel-5

Laravel documentation

  

注意:当前不使用枚举列重命名表中的列   支撑。

使用ENUM的最佳替代方案是什么。例如,我有一个users表,其中包含type ENUM列。我可能需要在将来修改该表,并且由于ENUM列的存在而无法进行修改,因此限制性太强。

1 个答案:

答案 0 :(得分:2)

我通常做的是:制作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();