Страница 1 из 1
Уникальность группы полей
Добавлено: 09 июн 2021, 07:06
vinznsk
Добрый день, коллеги! Подскажите, можно ли как-нибудь сделать проверку уникальности поля с учетом данных из другого поля?
Например, у меня есть проект и уникальное поле "URL". Мне нужно чтобы поле URL было уникально только для этого проекта, но могло повторяться в другом.
Это сейчас можно сделать?
Re: Уникальность группы полей
Добавлено: 09 июн 2021, 09:11
support
Специальных настроек для этого нет. Но можно использовать поле "Ajax запрос"
https://docs.rukovoditel.net.ru/index.php?p=99
и прописать там все необходимые настройки и проверки.
Re: Уникальность группы полей
Добавлено: 09 июн 2021, 10:11
vinznsk
Такое решение подходит, спасибо!
Re: Уникальность группы полей
Добавлено: 10 июн 2021, 14:08
vinznsk
Никак не получается реализовать.
Есть структура
- Проекты (связанная сущность "Клиенты" с таблицей "Клиенты")
-- Задачи (дочерняя сущность "клиенты" из таблицы "проекты")
--- Задача ХХ
- Клиенты
Пытаюсь в Задаче ХХ в форме автоматизации проверять наличия URL в рамках проекта.
получилось проверять по всей базе. Но никак не могу сделать проверку в рамках одного проекта.
Просто в таблице сущности "Задачи" поле проекты пустое. Видимо, потому, что это дочерняя сущность. Но в таблице задачи идет связь с таблицей "Клиенты".
Не могу понять как мне подтянуть текущее значение проекта, чтобы потом сравнивать.
Можно ли получить как-то значение поля "Проекты" через ID поля для текущей записи?
- не работает (339 пробовал и как поле "проекты" в текущей сущности, так и в родительской")
То есть простой заход типа:
Код: Выделить всё
"select field_339 from app_entity_25 where field_339 = '" . $url . "' and field_242 = '" . $project . "';"
не подходит.
upd. думал вывести поле "проект" в форму и потом брать оттуда, но почему-то в автоматизации это поле не подтягивается. Видимо, потому, что это вложенная сущность.
Re: Уникальность группы полей
Добавлено: 10 июн 2021, 18:24
support
идентификатор родительской записи хранится в поле 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)
app_entity_24 - замените на ID сущности Задачи
XX - это parent_item_id для сущнсоти Задачи которое вы нашли ранее
Re: Уникальность группы полей
Добавлено: 11 июн 2021, 03:50
vinznsk
Спасибо, Сергей!
По SQL я понимаю логику, запрос будет вот такой в результате:
Код: Выделить всё
SELECT * FROM `app_entity_25` WHERE `parent_item_id` in (select `id` from `app_entity_26` where `field_262`='5');
где app_entity_26 - это сущность Проекты, а 262 это поле в сущности "проекты" связанная с таблицей "клиенты", где нам нужен 5ый клиент.
Проблема немного в другом. Мне нужно как-то определить через PHP в форме Ajax-поля ID клиента, чтобы я мог потом подставить этот айдишник в SQL-запрос (на место цифры "5").
То есть именно первую часть работы когда находится
идентификатор родительской записи хранится в поле parent_item_id
Так как вам нужно перепрыгнуть через сущность, вначале выберите parent_item_id для Задача ХХ - это будет ID задачи
Затем выберите parent_item_id для сущнсоти Задачи.
я не нашел этого в документации, поэтому не совсем понимаю логику "перешагивания" на родительскую запись.
Re: Уникальность группы полей
Добавлено: 11 июн 2021, 04:14
vinznsk
Кажется, понял логику более мене. Пытаюсь разобраться с запросом
Код: Выделить всё
$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);
Но как-будто кнопка через автоматизацию не подтягивает данные текущей записи, если этого в форме нет.
Re: Уникальность группы полей
Добавлено: 11 июн 2021, 04:53
vinznsk
Почему-то не получается достать parent_item_id, хотя Item_id выдает.

- 20210611-091133-096.png (4.84 КБ) 3010 просмотров
Код: Выделить всё
$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'] . ";");
в результате бесконечная загрузка формы...
Re: Уникальность группы полей
Добавлено: 11 июн 2021, 06:51
support
Не корректный код. Должно быть так
Код: Выделить всё
$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'];
1) создаем запрос
2) получаем результат
3) присваиваем значение переменной
Re: Уникальность группы полей
Добавлено: 11 июн 2021, 09:58
vinznsk
support писал(а): 11 июн 2021, 06:51
Не корректный код. Должно быть так
Спасибо, разобрался
Код: Выделить всё
$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 />';
}
Вот так работает