Уникальность группы полей
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Уникальность группы полей
Добрый день, коллеги! Подскажите, можно ли как-нибудь сделать проверку уникальности поля с учетом данных из другого поля?
Например, у меня есть проект и уникальное поле "URL". Мне нужно чтобы поле URL было уникально только для этого проекта, но могло повторяться в другом.
Это сейчас можно сделать?
Например, у меня есть проект и уникальное поле "URL". Мне нужно чтобы поле URL было уникально только для этого проекта, но могло повторяться в другом.
Это сейчас можно сделать?
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Уникальность группы полей
Специальных настроек для этого нет. Но можно использовать поле "Ajax запрос"
https://docs.rukovoditel.net.ru/index.php?p=99
и прописать там все необходимые настройки и проверки.
https://docs.rukovoditel.net.ru/index.php?p=99
и прописать там все необходимые настройки и проверки.
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Re: Уникальность группы полей
Такое решение подходит, спасибо!
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Re: Уникальность группы полей
Никак не получается реализовать.
Есть структура
- Проекты (связанная сущность "Клиенты" с таблицей "Клиенты")
-- Задачи (дочерняя сущность "клиенты" из таблицы "проекты")
--- Задача ХХ
- Клиенты
Пытаюсь в Задаче ХХ в форме автоматизации проверять наличия URL в рамках проекта.
получилось проверять по всей базе. Но никак не могу сделать проверку в рамках одного проекта.
Просто в таблице сущности "Задачи" поле проекты пустое. Видимо, потому, что это дочерняя сущность. Но в таблице задачи идет связь с таблицей "Клиенты".
Не могу понять как мне подтянуть текущее значение проекта, чтобы потом сравнивать.
Можно ли получить как-то значение поля "Проекты" через ID поля для текущей записи? - не работает (339 пробовал и как поле "проекты" в текущей сущности, так и в родительской")
То есть простой заход типа:
не подходит.
upd. думал вывести поле "проект" в форму и потом брать оттуда, но почему-то в автоматизации это поле не подтягивается. Видимо, потому, что это вложенная сущность.
Есть структура
- Проекты (связанная сущность "Клиенты" с таблицей "Клиенты")
-- Задачи (дочерняя сущность "клиенты" из таблицы "проекты")
--- Задача ХХ
- Клиенты
Пытаюсь в Задаче ХХ в форме автоматизации проверять наличия URL в рамках проекта.
получилось проверять по всей базе. Но никак не могу сделать проверку в рамках одного проекта.
Просто в таблице сущности "Задачи" поле проекты пустое. Видимо, потому, что это дочерняя сущность. Но в таблице задачи идет связь с таблицей "Клиенты".
Не могу понять как мне подтянуть текущее значение проекта, чтобы потом сравнивать.
Можно ли получить как-то значение поля "Проекты" через ID поля для текущей записи?
Код: Выделить всё
$project = [242];То есть простой заход типа:
Код: Выделить всё
"select field_339 from app_entity_25 where field_339 = '" . $url . "' and field_242 = '" . $project . "';"upd. думал вывести поле "проект" в форму и потом брать оттуда, но почему-то в автоматизации это поле не подтягивается. Видимо, потому, что это вложенная сущность.
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Уникальность группы полей
идентификатор родительской записи хранится в поле parent_item_id
Так как вам нужно перепрыгнуть через сущность, вначале выберите parent_item_id для Задача ХХ - это будет ID задачи
Затем выберите parent_item_id для сущнсоти Задачи.
А в основном запросе нужно будет писать вложенный подзапрос, примерно так:
app_entity_24 - замените на ID сущности Задачи
XX - это parent_item_id для сущнсоти Задачи которое вы нашли ранее
Так как вам нужно перепрыгнуть через сущность, вначале выберите parent_item_id для Задача ХХ - это будет ID задачи
Затем выберите parent_item_id для сущнсоти Задачи.
А в основном запросе нужно будет писать вложенный подзапрос, примерно так:
Код: Выделить всё
select field_339 from app_entity_25 where field_339 = '" . $url . "' where parent_item_id in (select id from app_entity_24 where parent_item_id=XX)XX - это parent_item_id для сущнсоти Задачи которое вы нашли ранее
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Re: Уникальность группы полей
Спасибо, Сергей!
По SQL я понимаю логику, запрос будет вот такой в результате:
где app_entity_26 - это сущность Проекты, а 262 это поле в сущности "проекты" связанная с таблицей "клиенты", где нам нужен 5ый клиент.
Проблема немного в другом. Мне нужно как-то определить через PHP в форме Ajax-поля ID клиента, чтобы я мог потом подставить этот айдишник в SQL-запрос (на место цифры "5").
То есть именно первую часть работы когда находится
По SQL я понимаю логику, запрос будет вот такой в результате:
Код: Выделить всё
SELECT * FROM `app_entity_25` WHERE `parent_item_id` in (select `id` from `app_entity_26` where `field_262`='5');Проблема немного в другом. Мне нужно как-то определить через PHP в форме Ajax-поля ID клиента, чтобы я мог потом подставить этот айдишник в SQL-запрос (на место цифры "5").
То есть именно первую часть работы когда находится
я не нашел этого в документации, поэтому не совсем понимаю логику "перешагивания" на родительскую запись.идентификатор родительской записи хранится в поле parent_item_id
Так как вам нужно перепрыгнуть через сущность, вначале выберите parent_item_id для Задача ХХ - это будет ID задачи
Затем выберите parent_item_id для сущнсоти Задачи.
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Re: Уникальность группы полей
Кажется, понял логику более мене. Пытаюсь разобраться с запросом
Но как-будто кнопка через автоматизацию не подтягивает данные текущей записи, если этого в форме нет.
Код: Выделить всё
$url = [339]; //Getting Domain Name from "Domain Donor" Field
$project_id = db_query("SELECT field_262 FROM app_entity_26 WHERE id = '" . $_POST['parent_item_id'] . "';"); //getting project ID for that link
$domain_query = db_query("SELECT field_339 FROM app_entity_25 WHERE parent_item_id in (select id from app_entity_26 where field_262 = '" . $project_id . "');",false);
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Re: Уникальность группы полей
Почему-то не получается достать parent_item_id, хотя Item_id выдает.
Попробовал так:
в результате бесконечная загрузка формы...
Код: Выделить всё
$project_id = db_query("SELECT field_262 FROM app_entity_26 WHERE id = '" . $_POST['parent_item_id'] . "';");
Код: Выделить всё
$parent_item_id = db_query("SELECT parent_item_id FROM app_entity_25 WHERE id = " . $_GET['item_id'] . ";");
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Уникальность группы полей
Не корректный код. Должно быть так
1) создаем запрос
2) получаем результат
3) присваиваем значение переменной
Код: Выделить всё
$item_query = db_query("SELECT parent_item_id FROM app_entity_25 WHERE id = " . $_GET['item_id'] );
$item = db_fetch_array($item_query);
$parent_item_id = $item['parent_item_id'];2) получаем результат
3) присваиваем значение переменной
-
vinznsk
- Сообщения: 64
- Зарегистрирован: 22 мар 2021, 09:52
- Имя: Alex
- Откуда: New York, US
- Организация: Uplevel Solutions
- Контактная информация:
Re: Уникальность группы полей
Спасибо, разобрался
Код: Выделить всё
$url = [339];
//getting parent_item_id
$item_query = db_query("SELECT parent_item_id FROM app_entity_25 WHERE id = " . $_GET['item_id']);
$item = db_fetch_array($item_query);
$parent_item_id = $item['parent_item_id'];
//getting project ID for the task
$project_query = db_query("SELECT field_262 FROM app_entity_26 WHERE id = '" . $parent_item_id . "';");
$project_item = db_fetch_array($project_query);
$project_id = $project_item['field_262'];
//getting url
$domain_query = db_query("SELECT field_339 FROM app_entity_25 WHERE parent_item_id in (select id from app_entity_26 where field_262 = '" . $project_id . "' AND field_339 = '" . $url ."');",false);
if($domain_array = db_fetch_array($domain_query))
{
echo '<b style="color:red">Domain ' . $url . ' already exist!</b><br />';
}
else
{
echo '<b style="color:green">Domain ' . $url . ' doesn\'t exist!</b><br />';
}