Внешний ключ Filemaker PHP

#php #filemaker

#php #filemaker

Вопрос:

Я смог успешно создавать записи в таблице, которая не имеет внешних ключей, но постоянно сталкиваюсь с ошибкой «Поле не может быть изменено» при попытке установить внешний ключ в таблице, которая имеет внешний ключ к первой таблице. Каков правильный способ установки внешнего ключа в таблице через PHP API?

 $data = array(
  "_fk_LeadID"  => '24',
  "Date"    => "12/12/2016",
  "Result"  => "Still Investigating",
  "Sales_Rep" => "Joe",
  "Time"    => "9:00PM"
);

$rec = $fm->createRecord('Appointments', $data);
$result = $rec->commit();

if (FileMaker::isError($result)) { 
    echo "<p>Error: " . $result->getMessage() . "</p>"; 
    exit; 
}
  

Я просматривал документацию по PHP, и в ней упоминались порталы, но у меня не было ни одной настройки для этих таблиц, поэтому я не смог их использовать. Каков правильный способ установки внешнего ключа в таблице?

Ответ №1:

Ваш код в порядке, и проблема на самом деле не связана с PHP. FileMaker PHP не имеет каких-либо специальных функций для создания внешних ключей или даже первичных ключей.Итак, проблема на стороне сервера FileMaker.

У вас ошибка, что одно из полей не поддается изменению. Скорее всего, это поле вычисления (столбец, заполненный триггером). Я бы попытался установить поля вручную в FileMaker и посмотреть, выдаст ли он вам ту же ошибку (я подозреваю, что так и будет).

Если вы не можете использовать FileMaker, создайте запись только с _fk_LeadID и посмотрите, есть ли ошибка, затем начните добавлять по одному полю за раз. Поле, которое выдает ошибку, вероятно, является вычислением. Например, Дата и время могут быть автоматически заполненными датой и временем создания записи.

Комментарии:

1. Ошибка, по-видимому, вызвана опцией «Запретить изменение значения во время ввода данных»., есть ли способ создать запись с включенным этим параметром?

2. Вы можете отключить его, но, скорее всего, он существует по какой-то причине. Старайтесь не устанавливать этот столбец в своем коде. Скорее всего, он будет заполнен правильным значением.