Как создать условие с проверкой битовой маской в Laravel
Всем привет. Ситуация следующая, есть две таблицы, contract и contract_group
contract - имеет столбцы id,title,gr .... столбец gr содержит битовую маску.
contract_group - имеет столбцы id,title
столбец gr вычисляется по формуле 1<<gr1 | 1<<gr2...| 1<<grN, где gr1,gr2,grN это id из таблицы contract_group.
Каким образом можно объединить две таблицы и получить группы для контракта? с помощью with не получится.
На данный момент сделал так:
public static function groups(){
$contracts = self::get();
$groups = GroupsContract::get();
foreach ($contracts as $key => $contract){
foreach ($groups as $group){
if(($contract->gr & (1<<$group->id)) > 0){
$contracts[$key]->attributes['groups'][] = $group;
}
}
}
}
Но тут возникает много неудобный моментов, таких как нельзя добавить условий через модель и т.п