В моей базе данных Я хранлю разрешение пользователей в двоичном формате. У меня 3 пользователя, администратор, менеджер, финансы. Тезисы представляют коротким «бинарного» строка,mysql LIKE condition in laravel eloquent
Admin - 100
Manager - 010
Finance - 001
Теперь роли взаимозаменяемы, и пользователь может иметь более чем одну роль, например, пользователь может иметь права финансов и менеджера, представлены как это, «011» в основном 1 представляет на 0 означает off.
Моя проблема ищет данные в моих отношениях с Laravel, в настоящее время я делаю следующее, чтобы найти менеджера.
public function managers() {
return $this->belongsToMany('User')->wherePivot('role', '=', '010')->withPivot(['created_at' => 'created_at as joined', 'role' => 'role as role']);
}
Теперь очевидно, что это работает только в том случае, если пользователь является менеджером, а не финансом. Я полагаю, что могу использовать mysql's LIKE
, чтобы сравнить разрешение на строку, но я могу поработать, чтобы найти частичные совпадения?
Например, как бы проверить второй из трех, либо 0, либо 1? Простое правило,
номер = 1, то владелец разрешения Во-первых, Второй номер = 1, то менеджер разрешения, Thirder номер = 1, то финансирование разрешение
но может быть любое количество комбинаций.
Нет ли функции SUBST или CHARAT, которую вы могли бы использовать для этого? – durbnpoisn
'wherePivot ('role', 'LIKE', '_1 _')' –
Похоже, вы могли избежать этой проблемы, создав таблицу разрешений и установив между собой множество отношений между пользователями и разрешениями. –