Я новичок в FileMaker и пытаюсь получить данные через API.
У меня возникает проблема, когда я создаю newFindCommand и выполняю его, результирующий набор записей содержит столько строк, сколько имеется в макете, но каждая строка одинакова. Более конкретно, каждая строка является копией ПЕРВОЙ строки в базе данных.
Например. Я ищу продукты с кодом продукта, например, «XXX», которых должно быть 7. Я получаю 7 строк назад, но каждый из них является одним и тем же продуктом.
Я просмотрел несколько учебных пособий в Интернете, и они выполняют точно такие же операции, что и я, поэтому я растерялся относительно того, почему мои результаты выходят таким образом.
Это мой код для этой проблемы. Я еще не смог отследить причину сам.
$findCommand = $productsFM->newFindCommand($productsLayout);
$findCommand->addFindCriterion('Product Code', 'XX123');
$findCommand->addSortRule('Product Code', 1);
$result = $findCommand->execute();
if (FileMaker::isError($result)) {
echo "<p>Error: " . $result->getMessage() . "</p>";
exit;
}
$records = $result->getRecords();
foreach($records as $record) {
echo $record->getField('Product ID'); // get the same code for each iteration here
}
Любой совет?
Редактировать:
Упомянутый выше макет $ productLayout относится к макету Items.
Вот краткая разбивка диаграммы ER для таблицы Предметов.
Таблица: предметы
Идентификационный номер семьи Идентификационный номер GUID
Таблица: параметры элемента
Идентификатор изделия Описание GUID
Таблица: Цены ~ Предмет
Идентификационный номер семьи
Таблица: количество
Кол-во ID товара GUID
Я исправил это, пытаясь снова добавить PHP-файлы API, исходя из предположения, что у меня что-то не так. Когда я добавил файлы и запустил код, я получил несколько ошибок об использовании устаревших операторов в разных строках API-интерфейса FileMaker.
Оказывается, несколько строк используют старые =& при создании объектов и это стало причиной ошибок.
Для всех, кроме одной из этих ошибок, вы можете просто удалить&и все в порядке.
Но для одной из строк (я думаю, что это было около строки 72), если вы исправите это, удалив ‘&«API начнет возвращать неверные результаты. Это где я ошибся в первый раз.
Единственные два варианта, которые я мог видеть, — это перейти на более старую версию PHP, где =& Оператор не считается устаревшим или подавлять предупреждения в php.ini.
Я выбрал последнее:
error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT
Других решений пока нет …