Заранее спасибо за совет!
Справочная информация Я создаю базу данных для отслеживания заказов, размещаемых клиентами.
An 'Orders
'таблица хранит общие сведения о заказе, такие как имя клиента, дата заказа и требуемая дата доставки.
В отдельной таблице' Order_Items
'хранятся определенные товары, которые заказал клиент.
Это отношение один-ко-многим между таблицей 'Orders
' и таблицей 'Order_Items
', т. Е. У одного 'Order
' может быть много 'Order_Items
', но каждый 'Order_Item
'должен быть связан только с одной' Order
'.
Текущее состояние В настоящее время у меня есть страница, где пользователь создает новую запись' Order
'.Затем пользователь попадает на другую страницу, где он может создать столько записей «Order_Item
», сколько необходимо для заказа.
Желаемое состояние То, чего я хотел бы достичь, это: Когдапользователь создает новые записи Order_Item
, автоматически выделяет текущую запись Order
в качестве внешнего ключа для новой записи Order_Item
.
Что я пробовалПока что
Действие пользователя вручную: Один из способов установить связь между 'Order
' и всеми его Order_Items
состоит в добавлениираскрывающийся виджет, который эффективно запрашивает у пользователя что-то вроде «К какому номеру заказа принадлежат все эти элементы»? Затем действие пользователя установит связь между двумя таблицами и свяжет одну 'Order
'со многими' Order_Items
'.Однако моя цель состоит в том, чтобы этот шаг обрабатывался программно.
Официальная документация: Я ссылался на официальную документацию , которая была полезна, но как яЯ все еще учусь, я не знаю точно, что искать.Функция prefetch показалась многообещающей, но фактически не устанавливает связь;он просто загружает связанные записи более эффективно.
Учебники App Maker: Я нашел учебник App Maker , который создает приложение HR, где пользователь может создать список из 'Departments
', затем создайте список' Employees
', а затем свяжите' Employee
'с' Department
'.Однако в примере приложения это соединение устанавливается пользователем вручную.В моем желаемом состоянии я хотел бы, чтобы ссылка была установлена программно.
Режим ручного сохранения: Я также пытался переключиться на режим ручного сохранения , чтобы пользователь могдолжен создать черновую запись Orders
, а затем несколько черновых записей Order Items
и затем сохранить их все сразу.Однако мне не удалось заставить эту работу.Я не уверен, является ли неудача этого подхода причиной того, что 1) я пытаюсь создать черновые записи для более чем одной таблицы, 2) я просто делаю это неправильно, или 3) мне показалось, что я где-то читал этот черновикзаписи устарели.
Другие идеи
Я очень новичок в этой области и могу ошибаться, но у меня есть ощущение, что мне может понадобиться использовать некоторые сценарии для установления связи,Например, возможно, я мог бы использовать глобальную переменную, чтобы запомнить, какой «Order
» создает пользователь.Затем для каждого 'Order_Item
' я мог бы использовать событие onBeforeCreate
для запуска сценария, который устанавливает связь между 'Order_Item
' и 'Order
', который был запомнен из ранее установленной глобальной переменной.
Обновленный вопрос
Спасибо Маркусу и Морфинизму за ваши ответы.Я использовал оба ответа с некоторым успехом.
Morfinismo: Я успешно использовал код, на который вы указали мне в существующих записях, но не могу заставить его работать для вновь созданных записей.
Например:
widget.datasource.createItem(); // This creates a new record
var managerRecord = app.datasources.Manager.item; // This sets the Manager of the currently selected parent record as a variable successfully.
var teamRecord = app.datasources.Teams.item; // This attempts to set the Manager of the currently selected record as a variable. However, the record that was created in line 1 is not selected. Therefore, App Maker does not seem to know which record this line of code relates to and returns the error Cannot set property ‘Manager’ of null.
// Assign the manager to the team.
teamRecord.Manager = managerRecord; // This successfully assigns the manager but only in cases where the previous line of code was successful (i.e. existing records and not newly created ones).
Есть ли у вас какие-либо предложения или комментарии по поводу того, как применить этот код к записям, которые создаются начальной строкой кода в строке 1?