$entity_id = 25;
$item_id = [id]
//prepare data to update
$data = [
'field_217' => 75, //change status
];
//run item update by id
items::update_by_id($entity_id,$item_id,$data);
Parazit00 писал(а): ↑14 мар 2024, 14:13
Добрый день ! Как получить ID записи если сравнить 2 сущности с 2 полями и если данные у них одинаковые то получить ID
$entity_id = 25;
$item_id = [id]
//prepare data to update
$data = [
'field_217' => 75, //change status
];
//run item update by id
items::update_by_id($entity_id,$item_id,$data);
Можно двумя запросами.
Сначала в сущности 25 забрать значение поля 214.
Потом сделать запрос в сущность 29 с условием, что поле 265 = значению, полученному в предыдущем запросе. И забрать отсюда id записи.
Parazit00 писал(а): ↑14 мар 2024, 14:13
Добрый день ! Как получить ID записи если сравнить 2 сущности с 2 полями и если данные у них одинаковые то получить ID
$entity_id = 25;
$item_id = [id]
//prepare data to update
$data = [
'field_217' => 75, //change status
];
//run item update by id
items::update_by_id($entity_id,$item_id,$data);
Можно двумя запросами.
Сначала в сущности 25 забрать значение поля 214.
Потом сделать запрос в сущность 29 с условием, что поле 265 = значению, полученному в предыдущем запросе. И забрать отсюда id записи.
Если непонятно, распишу подробно.
Могли бы вы рассказать более подробно? Я уже мучаюсь с этой проблемой 4 дня, но так и не могу получить ID c app_entity_25.field_214. Моя цель - получить ID для смены статуса заказа, который добавлен к 1-ой сущности app_entity_25.field_214.
У меня есть вторая сущность app_entity_29.field_265, в которую я добавляю полученный товар через поле ввода. Затем я пытаюсь сравнить записи через PHP. Если в сущности app_entity_25.field_214 найден код, то мне нужно получить ID и выполнить соответствующий код выше для изменения статуса.
$entity_id = 25;
$data = array('field_217' => 75);
$query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` IN (SELECT `field_265` FROM `app_entity_29` WHERE `field_265` <> '')");
// если в результате запроса вернётся несколько записей используем цикл чтобы обработать все
while($result = mysqli_fetch_assoc($query)) {
$item_id = $result['id'];
items::update_by_id($entity_id, $item_id, $data);
}
В условие основного запроса надо ещё добавить что-нибудь связанное со статусами, чтобы не выбирать каждый раз абсолютно все совпадающие записи, а выбрать только с нужным статусом и совпадением по коду посылки.
$entity_id = 25;
$data = array('field_217' => 75);
$query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` IN (SELECT `field_265` FROM `app_entity_29` WHERE `field_265` <> '')");
// если в результате запроса вернётся несколько записей используем цикл чтобы обработать все
while($result = mysqli_fetch_assoc($query)) {
$item_id = $result['id'];
items::update_by_id($entity_id, $item_id, $data);
}
В условие основного запроса надо ещё добавить что-нибудь связанное со статусами, чтобы не выбирать каждый раз абсолютно все совпадающие записи, а выбрать только с нужным статусом и совпадением по коду посылки.
Большое вам человеческое спасибо. Теперь все работает как я хотел.
Опять ничего не понятно. Какое поле... какой строке изменить статус... Ну или может я тупой. Вот Вам наводка, а дальше думайте алгоритм сравнений.
Для превращения текста из поля ($text) в массив значений ($text_arr) с разделением по пробелу или по переносу строки используйте: