Класс CrmUserInfo представляет собой сущность контактной информации о пользователе в системе Ultralight CRM. Эта сущность используется для хранения дополнительной контактной информации, которая не входит в основную запись пользователя.
App\Models\CrmUserInfocrm_user_infoEntityСущность CrmUserInfo предназначена для:
user()Возвращает связь принадлежности пользователю (обратная связь один-ко-многим).
Возвращает: Объект связи BelongsTo
Пример использования:
// Получение пользователя, которому принадлежит контактная информация
$user = $userInfo->user;
// Получение всех записей контактной информации пользователя
$userInfoRecords = CrmUserInfo::where('user_id', $userId)->get();
Класс наследует все методы от базового класса Entity:
initialize(int $id, int $typeId, bool $dnCheckRights = false)Инициализирует экземпляр сущности с указанными параметрами.
Параметры:
$id — идентификатор экземпляра сущности$typeId — идентификатор типа сущности$dnCheckRights — флаг, указывающий, нужно ли проверять права доступаgetField(string $name)Получает значение поля сущности по его имени.
Параметры:
$name — имя поляВозвращает: Значение поля
setField(string $name, $value)Устанавливает значение поля сущности.
Параметры:
$name — имя поля$value — новое значение поляdelete()Удаляет экземпляр сущности из базы данных.
save()Сохраняет изменения в экземпляре сущности.
Сущность CrmUserInfo содержит следующие поля:
id — первичный ключ (автоинкремент)user_id — идентификатор пользователяtype — тип контактной информации (PHONE, EMAIL)info — значение контактной информацииcreated_at — дата созданияupdated_at — дата обновленияtable — имя таблицы: crm_user_infotype определяет тип контактной информацииКонтактная информация хранится в денормализованной форме, что позволяет:
Система поддерживает следующие типы:
| Тип | Описание | Используется для |
|---|---|---|
| PHONE | Телефонный номер | Дополнительные телефоны |
| Адрес электронной почты | Дополнительные email |
Примечание: При необходимости система может быть расширена для поддержки других типов (например, ADDRESS, SKYPE и т.д.).
user_id — идентификатор пользователяtype — тип контактной информацииinfo — значение контактной информацииuser_id и type// Создание записи для дополнительного телефона
$phoneRecord = EntityTable::createEntity(4, [
'user_id' => 1,
'type' => 'PHONE',
'info' => '+79991234567'
]);
// Создание записи для дополнительного email
$emailRecord = EntityTable::createEntity(4, [
'user_id' => 1,
'type' => 'EMAIL',
'info' => 'user@gmail.com'
]);
// Получение всех записей контактной информации пользователя
$allContactInfo = EntityTable::getEntities([
'ENTITY_TYPE_ID' => 4,
'FILTER' => [['user_id', '=', 1]]
]);
// Получение только телефонов пользователя
$phones = EntityTable::getEntities([
'ENTITY_TYPE_ID' => 4,
'FILTER' => [
['user_id', '=', 1],
['type', '=', 'PHONE']
]
]);
// Получение только email пользователя
$emails = EntityTable::getEntities([
'ENTITY_TYPE_ID' => 4,
'FILTER' => [
['user_id', '=', 1],
['type', '=', 'EMAIL']
]
]);
// Инициализация пользователя
$user = new CrmUser();
$user->initialize(1, 1);
// Перезапись всех телефонов
$user->rewritePhones([
'+79991234567',
'+79887654321'
]);
// Перезапись всех email
$user->rewriteEmails([
'user@company.com',
'user@gmail.com'
]);
// Поиск пользователя по дополнительному телефону
$userInfo = EntityTable::getEntities([
'ENTITY_TYPE_ID' => 4,
'FILTER' => [
['type', '=', 'PHONE'],
['info', '=', '+79991234567']
]
]);
if (!empty($userInfo)) {
$userId = $userInfo[0]->getField('user_id');
// Получение пользователя
$user = EntityTable::getEntities([
'ENTITY_TYPE_ID' => 1,
'FILTER' => [['id', '=', $userId]]
])[0];
}
$fillableCrmUser// Пользователь имеет несколько способов связи
$user->rewritePhones([
'+79991234567', // Основной
'+79887654321', // Рабочий
'+79776543210' // Домашний
]);
$user->rewriteEmails([
'user@company.com', // Рабочий
'user@gmail.com', // Личный
'user@yahoo.com' // Резервный
]);
// Поиск пользователя по дополнительному email
function findUserByAdditionalEmail($email) {
$userInfo = EntityTable::getEntities([
'ENTITY_TYPE_ID' => 4,
'FILTER' => [
['type', '=', 'EMAIL'],
['info', '=', $email]
]
]);
if (!empty($userInfo)) {
$userId = $userInfo[0]->getField('user_id');
return EntityTable::getEntities([
'ENTITY_TYPE_ID' => 1,
'FILTER' => [['id', '=', $userId]]
])[0];
}
return null;
}
Сущность CrmUserInfo является важным компонентом системы управления контактной информацией в Ultralight CRM. Она обеспечивает гибкую и масштабируемую модель хранения дополнительных данных о пользователях, позволяя эффективно управлять множественными контактными способами. Благодаря своей простой структуре и интеграции с основной сущностью пользователя, сущность эффективно выполняет свою функцию хранения и предоставления контактной информации.