注意:当前不使用枚举列重命名表中的列 支撑。
使用ENUM的最佳替代方案是什么。例如,我有一个users
表,其中包含type
ENUM列。我可能需要在将来修改该表,并且由于ENUM列的存在而无法进行修改,因此限制性太强。
答案 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();