Переключение между созданием и обновлением вложенных отношений в Lighthouse GraphQL hasOne при обновлении модели - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть следующий код в Lighthouse:

updateProject(
  input: UpdateProjectInput! @spread
): Project @update

Модель Project содержит отношение hasOne с моделью технико-экономического обоснования, поэтому для ее создания / обновления используется следующий код:

input UpdateProjectFeasibilityBelongsTo {
   create: CreateProjectFeasibilityInput
   update: UpdateProjectFeasibilityInput
}

Единственное различие между ними заключается в наличии идентификатора в обновлении, поскольку он необходим для определения связанной модели. Почему, смотрите это: https://github.com/nuwave/lighthouse/issues/1158. Эти входные данные определены ниже:

// other fields removed for emphasis
input CreateFeasibilityStudyInput {
  target_2016: Float
}

input UpdateFeasibilityStudyInput {
  id: ID
  target_2016: Float
}

Создать связанную модель легко с помощью этих отношений, так как мне просто нужно вызвать команду create. Однако обновление будет затруднено, поскольку вам необходимо определить первичный ключ модели технико-экономического обоснования, который может существовать или не существовать (это необязательное поле).

Теперь можно ли переключаться между созданием и обновлением на основе о том, существует ли связанный идентификатор модели или нет с помощью директивы graphql @update? Альтернатива состоит в том, чтобы использовать собственный распознаватель, но это означало бы, что я должен написать все другие функции вставки / обновления (у меня есть 13 полей, которые требуют отношений). Вот так:

if ($project->feasibility_study()->exists()) {
// update existing related model i.e. run update method
}
else {
// create new model i.e. run create method
} 

Пожалуйста, дайте мне знать, если у вас есть какие-либо другие разъяснения. Кстати, у меня нет проблем с обновлением / созданием, мне просто нужно знать, есть ли способ переключения между двумя командами без использования специального преобразователя.

Заранее спасибо.

...